如果成员在数组中,则 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.x
或 i.x
。在字符串数组中,它只是两个字符串,而不是您在 i
中创建的恰好具有相同名称的值。
编辑:如果你想将 i
中的 x
和 y
保存在一个数组中,你必须这样做:
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");
}
}
}
}
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.x
或 i.x
。在字符串数组中,它只是两个字符串,而不是您在 i
中创建的恰好具有相同名称的值。
编辑:如果你想将 i
中的 x
和 y
保存在一个数组中,你必须这样做:
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");
}
}
}
}