数组中的Java对象本身
我想在数组中保存“Object”。 我不想在数组中保存“newobject()” 为什么?? 我有3个大的If语句,其中我检查一个实例是否是某个类的instanceof,例如数组中的Java对象本身,java,arrays,object,Java,Arrays,Object,我想在数组中保存“Object”。 我不想在数组中保存“newobject()” 为什么?? 我有3个大的If语句,其中我检查一个实例是否是某个类的instanceof,例如 if (x instanceof String) { SomeMethod(x, String); } 我的计划是: Class<?>[] classes = {Object, String, SomeOtherClass}; for (int i = 0; i < 3; i++) { i
if (x instanceof String) {
SomeMethod(x, String);
}
我的计划是:
Class<?>[] classes = {Object, String, SomeOtherClass};
for (int i = 0; i < 3; i++) {
if (x instanceof classes [i]) {
SomeMethod(x, classes [i]);
}
}
Class[]classes={Object,String,SomeOtherClass};
对于(int i=0;i<3;i++){
if(类[i]的x实例){
somethod(x,class[i]);
}
}
然而,这是可行的
Class<?>[] classes = {Object.class, String.class, SomeOtherClass.class};
Class[]classes={Object.Class,String.Class,SomeOtherClass.Class};
但是我不能再使用instanceof了
有什么建议吗
附言:在搜索时,我只找到了如何在数组中保存类的实例,而不是类本身
编辑:
在SomeMethod的位置,我想使用基于类的泛型类型(对象
,字符串
)。
这不适用于
对象.class
,字符串.class
您不能将“对象
”存储在数组中,因为对象
不是一个对象。字符串对象
是一个类名,对编译器来说很有意义,但是在程序中,除了内置原语之外,您不能对任何只能处理类实例(即对象)的对象进行操作<代码>对象。另一方面,类是一个对象(类型为class
)
你要找的是。然后使用
类
对象列表。不能在数组中存储“对象
”,因为对象
不是一个对象。字符串对象
是一个类名,对编译器来说很有意义,但是在程序中,除了内置原语之外,您不能对任何只能处理类实例(即对象)的对象进行操作<代码>对象。另一方面,类是一个对象(类型为class
)
你要找的是。然后使用类对象列表。使用
if (x.getClass() == classes[i]) {
而不是此的instanceof
但是请注意,任何使用这两种技术的代码从一开始就是可疑的,可能需要重构。为什么要以不知道对象类型的方式存储对象?使用
if (x.getClass() == classes[i]) {
而不是此的instanceof
但是请注意,任何使用这两种技术的代码从一开始就是可疑的,可能需要重构。为什么要以不知道对象类型的方式存储对象?如果涉及多态性,这将无法像instanceof
操作符那样工作。例如,Class cls=Numer.Class;Object obj=新整数(0);System.out.println(cls==obj.getClass())
将打印false
,尽管obj instanceof Number
。感谢您的帮助,但我必须在if语句中创建一个泛型类,并且可以执行类似new ArrayList
的操作,但ArrayList
或ArrayList
的操作work@mac.1是的,恐怕这完全不可能,由于类型擦除:泛型在编译阶段丢失所有类型参数。这是认为您需要重新编写代码的另一个原因。如果涉及多态性,这将无法像instanceof
操作符那样工作。例如,Class cls=Numer.Class;Object obj=新整数(0);System.out.println(cls==obj.getClass())
将打印false
,尽管obj instanceof Number
。感谢您的帮助,但我必须在if语句中创建一个泛型类,并且可以执行类似new ArrayList
的操作,但ArrayList
或ArrayList
的操作work@mac.1是的,恐怕这完全不可能,由于类型擦除:泛型在编译阶段丢失所有类型参数。这是认为需要重新编写代码的另一个原因。