我正在开发一个项目,我需要在其中向ArrayList添加大量对象,然后在其中调用特定的函数。我有这个部分,但在我的程序中,我需要从ArrayList访问特定的实例,只有我正在寻找的类的参数。 例如:
public class Manager {
public static ArrayList<O> loadedHacks = new ArrayList<O>();
public void initOs(){
loadedHacks.add(new O());
}
}
public class O {
public boolean enabled = false;
public void onEnable(){}
}
public class A extends O{
}
后来我想做这样的事情:
if(Helper.get(A.class).enabled){}
答案 0 :(得分:2)
你的问题并不完全清楚你要解决的实际问题是什么,但如果我理解正确,你要做的就是说:“对象X可能属于某个子类如果它是B的子类,那么我想调用B.method(),它没有在A“上定义。
在这种情况下,您可以执行以下操作:
if (object instanceof SpecificSubclass) {
SpecificSubclass specificObject = (SpecificSubclass) object;
specificObject.specificMethod();
}
您评论中的编辑:,您所寻找的功能似乎略有不同。如果您有一个Class作为参数,那么要查看某个特定对象是否是该类的实例,请使用Class.isAssignableFrom()方法。
答案 1 :(得分:1)
如果我理解正确,你将不得不迭代ArrayList并将你作为Class对象的param与数组中getClass()的返回类型进行比较,以获取对象并返回它。由于getClass()方法返回对象的Class类型,而不是引用。