Java:方法参数中的泛型枚举
回答以下问题: 我想知道,如何格式化代码,使其一般需要枚举 Foo.javaJava:方法参数中的泛型枚举,java,generics,parameters,enums,Java,Generics,Parameters,Enums,回答以下问题: 我想知道,如何格式化代码,使其一般需要枚举 Foo.java public enum Foo { a(1), b(2); } java public class Bar { public Bar(generic enum); } 稍后,我将有更多类似“foo”的枚举类,但您仍然可以创建包含任何类型枚举类的bar。顺便说一下,我有“jdk1.6.0_20”…请参阅中的方法以供参考,例如 public static <E extends Enum<
public enum Foo {
a(1), b(2);
}
java
public class Bar {
public Bar(generic enum);
}
稍后,我将有更多类似“foo”的枚举类,但您仍然可以创建包含任何类型枚举类的bar。顺便说一下,我有“jdk1.6.0_20”…请参阅中的方法以供参考,例如
public static <E extends Enum<E>> EnumSet<E> of(E e)
您还可以添加工厂方法,如from
,with
等
public static <E2 extends Enum<E2>> Bar<E2> with(E2 item){
return new Bar<E2>(item);
}
带有(E2项)的公共静态条{
返回新条(项);
}
这样,在客户端代码中,您只需编写一次通用签名:
// 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);
//例如,这个简单的版本
Bar=Bar.with(MyEnum.SOME_实例);
//而不是更详细的版本:
Bar Bar=新的Bar(MyEnum.SOME_实例);
参考资料:
公共分类栏{
公共空栏(E枚举对象);
}
bar
方法现在可以接收任何类型的枚举。您也可以这样做:
public class Bar {
public Bar(Enum<?> e){}
}
感谢您提供的示例,尽管语法很荒谬,但我将其理解为“占位符扩展占位符的枚举”(而非枚举仅为“占位符扩展超类型”)
public class bar {
public <E extends Enum<E>> void bar(E enumObject);
}
public class Bar {
public Bar(Enum<?> e){}
}
e.getDeclaringClass().getEnumConstants()