Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:方法参数中的泛型枚举_Java_Generics_Parameters_Enums - Fatal编程技术网

Java:方法参数中的泛型枚举

Java:方法参数中的泛型枚举,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<

回答以下问题:

我想知道,如何格式化代码,使其一般需要枚举

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<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()