所以我认为我一直在尝试做不可能的事情,我只是想确保我的想法是正确的。
ArrayList 的 add() 方法不是静态的,因此必须实例化 ArrayList 的任何子类才能向其中添加任何内容,对吧?
因此,如果我想要一个扩展 ArrayList 的类来提供一些用于管理一组对象的新函数,我必须实际创建子类的实例吗?
如果是这种情况,是否可以通过像这样的静态初始化器实例化它:
static ArrayList<object> manager = new ArrayList<object>();
即使变量是静态的,这是否会被视为在类加载时创建的实例?我如何知道它何时被创建,以便我可以确保引用管理器的代码不会出现问题?我只需在代码开头实例化一次,因为随着时间的推移,我想多次使用同一个 ArrayList(添加、删除等)。
感谢您的澄清。
最佳答案
如果你想确保它不为空,你可以这样做:
private static final ArrayList<Object> manager;
static {
//Static blocks are automatically called
manager = new ArrayList<Object>();
//You can use any of the needed methods here as well, or even add things to manager.
//Note that this is basically the same as assigning it beforehand, and certainly not required.
//But it does allow, say, loading it from a file or however you need it.
}
您可以或者创建一个方法来检查实例是否为null
,如果是,则创建一个实例:
private static void instIfNull() {
if (manager == null) {
manager = new ArrayList<object>();
}
}
然后您将在所有本地函数中调用它。
关于java - 如何将 add() 添加到扩展 arraylist 的静态类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25703840/