【发布时间】:2018-04-08 22:36:15
【问题描述】:
我想要一个像这样的枚举:
public enum Type {
STRING, INTEGER, BOOLEAN, LIST(Type);
Type t;
Type() { this.t = this; )
Type(Type t) { this.t = t; }
}
这样我就可以为LIST 输入各种Types,比如可以打电话给Type.LIST(STRING)。这在 Java 中可行吗?
【问题讨论】:
-
不可能从枚举外部将数据传递给枚举定义的构造函数,但是,请说明您想如何使用它,以及您想要实现的目标,我/我们可以建议另一种选择。
-
@weston 我想创建一个 Map
来定义某些值的类型。我不想使用 Object,因为我不想实例化任何对象,尽量保持抽象,仅限于包含任何其他枚举的字符串、数字、布尔值、列表。 -
你可以;只需让构造函数采用
Type...,但我想你只能持有上面已经定义的TypesLIST。 -
@JacobG。是的,但这有两个问题。首先是我只能从枚举中调用
Types,其次我只能定义一次LIST(X),所以当我定义LIST(STRING)时,我将无法定义LIST(INTEGER). -
那么,这对你有用吗?
public enum Type { STRING, INTEGER, BOOLEAN, LIST_STRING, LIST_INTEGER, LIST_BOOLEAN还是需要LIST(LIST(X))?
标签: java generics parameters enums