创建 class 个对象的列表以将它们与另一个 class 个对象进行比较
creating a list of class objects to compare them with another class object
首先,抱歉,这个问题可能已经有了答案,但我的搜索并没有真正告诉我任何信息,我也不知道我在搜索什么。
基本上,我需要创建一个 List
的 class 对象(只存储 class / 不存储初始化的对象 - 真的不知道如何解释)并将它们与另一个 class 对象 (ala instanceof
) 进行比较。但是我不知道该怎么做。
例如:
我想这样做:
if(something1 instanceof something2)
具有 "something1's" 的 List
,以便能够像这样遍历它:
for(int i= 0 ; i <= list.size; i++)
{
if (list.get(i) instanceof something2)
doSomething();
}
所以我基本上需要知道 how/what 我必须存储在实际列表中才能执行类似的操作。
这可能吗?
我希望这是可以理解的。
Class
class 提供 API 做 instance of
像检查:
Class numClass = Number.class;
List<Class> classes = Arrays.asList(Integer.class);
...
if (numClass.isAssignableFrom(classes.get(i))) {
doSomething();
}
您可以使用 equals()
方法比较 class,此方法将检查 class 是否完全相同。
所以你首先把 classes 放在一个列表中(假设你有 classes Foo
和 Bar
并且列表是 List<Class>
):
list.add(Foo.class);
然后你遍历它并像这样进行比较:
if (list.get(i).equals(Bar.class))
doSomething();
使用通用列表和 class Class:
List<Class> classes = new ArrayList<Class>();
classes.add(Integer.class);
classes.add(String.class);
classes.add(MyClass.class);
//...
for (Class myClass : classes) {
if (myClass.equals(MyOtherClass.class)) {
doSomething();
}
}
列表 类 可以声明为 List<Class> list
,例如
List<Class> classes = Arrays.asList(String.class, Number.class);
Class testedClass = Integer.class;
如果您想测试确切的 类 相等性,请使用 equals
。
for (Class clazz : list) {
if (clazz.equals(testedClass)) {
doSomething();
}
}
甚至更短
if (list.contains(testedClass)) {
doSomething();
}
但是如果您需要 instanceof
的类似物,请使用 isAssignableFrom
for (Class clazz : list) {
if (clazz.isAssignableFrom(testedClass)) {
doSomething();
}
}
isAssignableFrom
表示 clazz
和 testedClass
处于同一层级并且 testedClass
扩展或等于 class
首先,抱歉,这个问题可能已经有了答案,但我的搜索并没有真正告诉我任何信息,我也不知道我在搜索什么。
基本上,我需要创建一个 List
的 class 对象(只存储 class / 不存储初始化的对象 - 真的不知道如何解释)并将它们与另一个 class 对象 (ala instanceof
) 进行比较。但是我不知道该怎么做。
例如:
我想这样做:
if(something1 instanceof something2)
具有 "something1's" 的 List
,以便能够像这样遍历它:
for(int i= 0 ; i <= list.size; i++)
{
if (list.get(i) instanceof something2)
doSomething();
}
所以我基本上需要知道 how/what 我必须存储在实际列表中才能执行类似的操作。
这可能吗?
我希望这是可以理解的。
Class
class 提供 API 做 instance of
像检查:
Class numClass = Number.class;
List<Class> classes = Arrays.asList(Integer.class);
...
if (numClass.isAssignableFrom(classes.get(i))) {
doSomething();
}
您可以使用 equals()
方法比较 class,此方法将检查 class 是否完全相同。
所以你首先把 classes 放在一个列表中(假设你有 classes Foo
和 Bar
并且列表是 List<Class>
):
list.add(Foo.class);
然后你遍历它并像这样进行比较:
if (list.get(i).equals(Bar.class))
doSomething();
使用通用列表和 class Class:
List<Class> classes = new ArrayList<Class>();
classes.add(Integer.class);
classes.add(String.class);
classes.add(MyClass.class);
//...
for (Class myClass : classes) {
if (myClass.equals(MyOtherClass.class)) {
doSomething();
}
}
列表 类 可以声明为 List<Class> list
,例如
List<Class> classes = Arrays.asList(String.class, Number.class);
Class testedClass = Integer.class;
如果您想测试确切的 类 相等性,请使用 equals
。
for (Class clazz : list) {
if (clazz.equals(testedClass)) {
doSomething();
}
}
甚至更短
if (list.contains(testedClass)) {
doSomething();
}
但是如果您需要 instanceof
的类似物,请使用 isAssignableFrom
for (Class clazz : list) {
if (clazz.isAssignableFrom(testedClass)) {
doSomething();
}
}
isAssignableFrom
表示 clazz
和 testedClass
处于同一层级并且 testedClass
扩展或等于 class