[英]Java Object itself in array
我想将“对象”保存在数组中。 我不想在数组中保存“ new Object()”。
为什么? 我有3个大的If语句,在其中检查实例是否为SomeClass的instanceof,例如
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.class, String.class, SomeOtherClass.class};
但后来我不能再使用instanceof了。
有什么建议么?
PS:在搜索此内容时,我只发现了如何在数组中保存类的实例,而不是类本身...
编辑:在SomeMethod的位置,我想使用基于类的通用类型( Object
, String
)。 这不适用于Object.class
和String.class
。
采用
if (x.getClass() == classes[i]) {
而不是instanceof
。
但是请注意,任何使用这两种技术之一的代码从一开始都是可疑的,可能需要重构。 为什么要以不知道对象类型的方式存储对象?
您不能将“ Object
”存储在数组内,因为Object
不是事物。 字符串Object
是一个类名称,对编译器有意义,但是您无法在程序中进行任何操作(除了内置基元之外),该程序只能处理类的实例 ,即object 。 另一方面, Object.class
是一个对象(类型为Class
)。
您正在寻找的是java.lang.Class.isInstance
。 然后使用Class
对象的列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.