-4
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]));
    }
}

它返回 false,因为 str[0] 是 Class String 的一个实例。有没有一种方法可以返回 true,因为 str[0]=x 并且变量“x”是整数类的实例?

谢谢。

4

3 回答 3

1

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

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

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

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

Integer.parseInt(ints[]);
于 2015-08-12T07:25:27.983 回答
0

您的课程等效于以下代码:-

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]));
        }
    }

仍然返回假。

将其更改为

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

将返回真。

于 2015-08-12T07:34:58.253 回答
0

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

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");
            }
        }       
    }
}
于 2015-08-12T08:42:43.090 回答