1

我正在做一个项目,我需要向 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){}
4

2 回答 2

2

从您的问题中并不清楚您要解决的实际问题是什么,但是如果我理解正确,您要做的是说:“对象 X 可能是 A 类的某个子类。如果它是 B 的子类,那么我想调用 B.method(),它没有在 A 上定义”。

在这种情况下,您可以执行以下操作:

if (object instanceof SpecificSubclass) {
  SpecificSubclass specificObject = (SpecificSubclass) object;
  specificObject.specificMethod();
}

编辑:从您的评论来看,您正在寻找的功能似乎略有不同。如果您有一个类作为参数,那么要查看特定对象是否实际上是该类的实例,请使用 Class.isAssignableFrom() 方法。

于 2012-06-14T04:14:14.580 回答
1

如果我理解正确,您将不得不遍历 ArrayList 并将您作为 Class 对象的参数与数组中 getClass() 的返回类型进行比较,以获取对象并返回它。由于 getClass() 方法返回的是对象的 Class 类型,而不是引用。

于 2012-06-14T04:19:50.690 回答