繁体   English   中英

数组中的Java对象本身

[英]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的位置,我想使用基于类的通用类型( ObjectString )。 这不适用于Object.classString.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM