如果成员在数组中,则 isInstance 不起作用

isInstance not working if the member is in a array

Class X{
    Integer x=new Integer(5);
    Integer y;
    public static void main (String[] args) throws java.lang.Exception
    {
         X i = new X();
         String[] str={"x", "y"};
         System.out.println(Integer.class.isInstance(str[0]));
    }
}

它 return 是错误的,因为 str[0] 是 Class 字符串的一个实例。 有没有一种方法可以 return 为真,因为 str[0]=x 并且变量 "x" 是 Integer Class 的实例?

谢谢。

当您执行 String[] str={"x", "y"}; 时,您并没有在数组中保存变量 x,而是保存仅包含字符 "x" 的字符串。这并不是因为它是一个数组或任何它不起作用的东西,如果你想得到 x 作为一个 Integer,你必须做 this.xi.x。在字符串数组中,它只是两个字符串,而不是您在 i 中创建的恰好具有相同名称的值。

编辑:如果你想将 i 中的 xy 保存在一个数组中,你必须这样做:

Integer[] ints= {i.x, y.x};
System.out.println(Integer.class.isInstance(ints[0]);

如果您想将这些值作为字符串获取:

Integer.parseInt(ints[]);

你的class相当于下面的代码:-

public  class X {
        public static void main (String[] args) throws java.lang.Exception
        {
             String[] str={"x", "y"};
             System.out.println(Integer.class.isInstance(Integer.parseInt(str[0])));
        }
    }

您正在尝试比较无法解析为整数的整数和随机字符串(在本例中为 x 和 y)。在这种情况下,您不能将字符串解析为整数。看下面的例子,它可能会让你明白:-

public  class X {
        public static void main (String[] args) throws java.lang.Exception
        {
             String[] str={"5", "7"};
              System.out.println(Integer.class.isInstance(str[0]));
        }
    }

仍然 return 错误。

改为

 System.out.println(Integer.class.isInstance(Integer.parseInt(str[0])));

将 return 为真。

感谢您的帮助。我是这样做的。

class A
{
    public Integer x=new Integer(5);
    public Integer y=new Integer(7);
    public static void main (String[] args) throws java.lang.Exception
    {
        A i=new A();
        String[] s = {"allowedFileTypeMap","x","y"};
        Field field = i.getClass().getField(s[1]);
        if(field!=null){
            Object fieldType = field.getType();
            System.out.println(fieldType);
            if(field.getType().isAssignableFrom(Integer.class)){
                System.out.println("Working");
            }
        }       
    }
}