java - 如何将 add() 添加到扩展 arraylist 的静态类?

标签 java arraylist static

所以我认为我一直在尝试做不可能的事情,我只是想确保我的想法是正确的。

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/

相关文章:

java - JSF : Elements of ArrayList are not rendered properly?

php - 如何将闭包绑定(bind)到 PHP 中的静态类变量?

c# - 为什么 Visual Studio 不警告静态字符串的循环初始化?

java - hibernate - 频繁查询时出错

java - 寻找一种从通用源代码生成 Java 和 C# 类的方法

java - 用arraylist创建对象并清除,但不清除对象中的arraylist

android - 无法对非静态方法 getAssets() 进行静态引用 - 在 fragment 中播放音频时遇到问题

java - 用于从 IOB 带注释的训练集训练命名实体识别器模型的文档

c# - C# 中的 HexBinaryAdapter?

java - 通过 ArrayList 的反向迭代给出 IndexOutOfBoundsException