java - Java中可变大小的数据类型?

标签 java data-structures types

在Java中,我想创建一个数据类型,比方说Atom,它包含一个索引号,当该索引= 0时,Atom将包含一个String数据,否则Atom只是一个索引(整数)。

我怎样才能做到这一点?

我想如果大多数原子只是索引并且只有一些包含字符串,那么会节省一些空间。

最佳答案

以下工厂模式说明了静态工厂方法 createAtom 如何使用不同的数据创建不同类(均为 Atom)的实例。

这里我将索引final改为0,不会改变对象的类。 Atom 还必须提供对可选数据的访问。

public class Atom {
    public final int index;

    private Atom(int ix) {
        this.index = ix;
    }

    public String getDatum() {
        return null;
    }

    public static Atom createAtom(int index) {
        return index != 0 ? new Atom(index) : new ExtendedAtom(index);
    }
}

class ExtendedAtom extends Atom {
    private String datum;

    ExtendedAtom(int ix) {
        super(ix);
    }

    @Override
    public String getDatum() {
        return datum;
    }

}

关于java - Java中可变大小的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27362264/

相关文章:

java - 在java中计算日期/时间差

python - 我在 Python 中使用什么来实现最大堆?

java - 具有泛型集合的 For 循环无法在 Java 7 中编译

c++ - 在 C++ 中确定模板类型的取值范围

c++ - 平凡可复制的值表示与可能不可复制的值表示之间是否存在显着差异

java - 将图像置于 LinearLayout 底部和我的应用程序底部之间

java - 如何单击主菜单中的子菜单链接

javascript - 循环队列在 Javascript 中的实现

javascript - 使用 BFS 时 N 叉树的最大深度

java - java中http url之间的空格