如何用Java创建Record类?

时间:2016-08-01 01:03:58

标签: java arrays dictionary record

我有以下课程Type

class Type{
    String type;
    public Type(String type){
        this.type = type;
    }
}

我在这里初始化的类型很少:

Type cor = new Type("cor");
Type name = new Type("name")

现在我希望有一个名为Record的课程,

class Record{
    String name;
    Type[] types;
    public Record(String name, Type[] types){
        this.name = name;
        this.types = types;
    }
}

好吧,我被困在这里。我想要做的是初始化类Record的一个实例,如下所示:

Record rec = new Record("Position", ...);

它应该是这样的,我将在这里给出一个位置记录的例子:

Record Position = [cor x, cor y, name z];

那么使用Type []这是一个不错的选择吗?我发现很难记录类型和变量名称,例如xy; 或者我应该使用HashMap?

1 个答案:

答案 0 :(得分:0)

如果没有关于您要模拟的内容的更多信息,很难回答这个问题。你的职位'例子是相当混乱的,因为它意味着单个记录有几个变量'不同类型。但是我假设一个记录可以有几种类型。目前还不清楚类型是否可以改变以及是否存在一组固定的类型。

理想情况下,这组类型是静态的,您可以使用类型的枚举:

enum RecordType {
    COR, NAME, ...;
}

class Record {
    public Record(String name, EnumSet<RecordType> types) {
        ...
    }
}

然后创建一条新记录如下:

Record record = new Record("My record", EnumSet.of(RecordType.NAME));

如果类型集不是静态的,那么您将需要定义一个类。在这种情况下,我建议您使用Set<RecordType>而不是RecordType[]作为构造函数参数。这清楚地表明它是一组类型(即没有重复),并且避免了您需要对数组进行的所有错误检查。

如果单个记录可以有不同类型的多个值,那么您将需要一个Map<RecordType,String>成员变量。在这种情况下,我建议不要尝试在构造函数中定义值。而是使用addTypeValue方法向地图添加值。