天天看點

java 反射 type_java – 如果type是primitive或type是object,則檢入反射

我使用下面的代碼來查找反射中的類成員是原始的和一些對象,我的問題是有一種方法來識别字段是類型原始,對象,類引用因為我想根據類型調用特定的方法.

例如,如果field是原始調用handlePrimitive,如果字段類型為其他類型引用(在下面的示例中為SalesOrderItemPK primaryKey;),則調用方法handleClassReferance等

隻是了解我需要擷取類并調用它并根據成員類型建立資料…

for (Object clsObj : listClsObj) {

Field[] declaredFields = clsObj.getClass().getDeclaredFields();

numOfEntries = 1;

do {

Object newInstance = clsObj.getClass().newInstance();

for (Field field : declaredFields) {

// Get member name & types

Class> fieldType = field.getType();

Type genericType = field.getGenericType();

String fieldTypeName = fieldType.getName();

String memberName = field.getName();

if (genericType instanceof ParameterizedType) {

ParameterizedType pt = (ParameterizedType) genericType;

for (Type typeOfReferance : pt.getActualTypeArguments()) {

String classTypeName = typeOfReferance.toString();

String[] parts = classTypeName.split(" ");

memberReferance = parts[1];

在這裡,我想調用可以根據資料類型處理字段的特定方法

public static SwitchInputType> switchInput(final String typeName, final String memberName, final int cnt) {

if (typeName.equals("java.lang.String")) {

return new SwitchInputType(new String(memberName + " " + cnt));

} else if (typeName.equals("char")) {

return new SwitchInputType(new Character('a'));

例如,類應該看起來像這樣,我需要知道primaryKey鍵來建立一個對象.

@Entity

public class SalesOrderItem

{

@EmbeddedId

SalesOrderItemPK primaryKey;

private String ProductId;

private String Notes;