对应以下问题:
Java: Enum parameter in method
我想知道,如何将代码格式化为一般需要枚举。
Foo.java
public enum Foo {
a(1), b(2);
}
Bar.java
public class Bar {
public Bar(generic enum);
}
稍后我会有更多的枚举类,比如“foo”,但是你仍然可以创建包含任何类型的枚举类的 bar。顺便说一句,我有“jdk1.6.0_20”...
最佳答案
见EnumSet中的方法供引用,例如
public static <E extends Enum<E>> EnumSet<E> of(E e)
(此方法返回一个 EnumSet,其中包含给定 Enum 元素 e 中的一个元素)
所以你需要的通用范围是:<E extends Enum<E>>
实际上,您可能会制作Bar
本身是通用的:
public class Bar<E extends Enum<E>> {
private final E item;
public E getItem(){
return item;
}
public Bar(final E item){
this.item = item;
}
}
您还可以添加工厂方法,例如 from
, with
等等
public static <E2 extends Enum<E2>> Bar<E2> with(E2 item){
return new Bar<E2>(item);
}
这样,在客户端代码中您只需编写一次通用签名:
// e.g. this simple version
Bar<MyEnum> bar = Bar.with(MyEnum.SOME_INSTANCE);
// instead of the more verbose version:
Bar<MyEnum> bar = new Bar<MyEnum>(MyEnum.SOME_INSTANCE);
引用:
关于Java:方法参数中的通用枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4325319/