如果,
enum Things{
UNIQUE_THING,
NON_UNIQUE_THINGS; // Need to specify what n0n-unique things as a separate enum
}
enum NonUniqueThings {
THING_1,
THING_2;
}
有没有办法只引用一个枚举Things
并在其中指定NonUniqueThings
的行为?我的意思是,来电者可以像 -
Things.UNIQUE_THING
或
Things.NON_UNIQUE_THING.THING_1
有什么想法吗?
答案 0 :(得分:3)
您可以为Things
引入一个可为空的参数,该参数将保留一些NonUniqueThings
值。当然,您必须为Things
提供一个构造函数,并为param提供一个getter,以便获取NonUniqueThings
值。
请注意,我假设UNIQUE_THING
不会绑定到某些NonUniqueThing
,这就是为什么它以null
为参数进行实例化的原因
enum Things{
UNIQUE_THING(null),
NON_UNIQUE_THINGS(NonUniqueThings.THING_1);
NonUniqueThings param;
Things(NonUniqueThings param) {
this.param = param;
}
public NonUniqueThing getNonUniqueThing() {
return param;
}
}
然后,您可以获取绑定到每个NonUniqueThings
值的Things
值,如下所示:
NonUniqueThings nonUniqueThing = Things.NON_UNIQUE_THING.getNonUniqueThing();
答案 1 :(得分:2)
enum Things {
UNIQUE_THING,
NON_UNIQUE_THING(
NonUniqueThings.A,
NonUniqueThings.C);
public final Child[] childs;
private Things() {
this.childs = null;
}
private Things(Child... childs) {
this.childs = childs;
}
}
interface Child {
//
}
enum NonUniqueThings implements Child {
A,
B,
C;
}
答案 2 :(得分:1)
在这里(如果我已正确理解您的需要):
public enum Things {
UNIQUE_THING, NON_UNIQUE_THINGS;
public enum NonUniqueThings {
THING_1, THING_2;
}
}
可以像:
一样访问Things.NonUniqueThings.THING_1