java - 如果类型是原始类型或类型是对象,请检查反射

标签 java reflection primitive-types generic-programming

我使用以下代码在反射中查找原始类成员和某些对象,我的问题是有一种方法可以识别字段是否为原始类型、对象、类引用,因为我想根据以下内容调用特定方法类型。 例如,如果字段是原始调用 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;

最佳答案

如果您不调用 .toString(),而是将 Type 转换为 Class,您将得到 .isPrimitive( )

关于java - 如果类型是原始类型或类型是对象,请检查反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14921406/

相关文章:

java - 只绘制一次图像,无需重新绘制

java - Android 枚举反射

java - 访问超出整数范围的字符串字符

java - Android Java 应用程序带有 C++ 纯头库?

java - Gwt 连接器的单击事件

java - 如何在运行时从java对象获取实例变量的行号

Java:为什么我不能将 int 转换为 Long

c - 哪些固定宽度整数类型可用

java - 在 Android Studio 中按下时更改操作栏菜单项图标

java - 使用反射获取声明为字段的 bean - 它的值