如果type是primitive或type是object,则检入反射

时间:2013-02-17 13:07:44

标签: java reflection primitive-types generic-programming

我使用下面的代码来查找反射中的类成员是原始的和一些对象,我的问题是有一种方法来识别字段是类型原始,对象,类引用因为我想调用特定的方法根据类型。 例如,如果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<String>(new String(memberName + " " + cnt));
    } else if (typeName.equals("char")) {
        return new SwitchInputType<Character>(new Character('a'));
例如,该类应该如下所示,我需要知道primaryKey键来创建一个对象。

@Entity
public class SalesOrderItem 
{
    @EmbeddedId
    SalesOrderItemPK primaryKey; 
    private String ProductId;
    private String Notes;

1 个答案:

答案 0 :(得分:15)

如果您不致电.toString(),而是将Type投放到Class,则会获得.isPrimitive()