gpt4 book ai didi

Java:方法参数中的通用枚举

转载 作者:IT老高 更新时间:2023-10-28 21:14:11 33 4
gpt4 key购买 nike

对应以下问题:

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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com