Geo*_*pty 7 java generics enums method-signature
我可能是错的,但我猜测为什么不能在方法中本地声明枚举? 因为Java中的枚举不能在本地声明,因此返回类型Enum的方法有问题吗?我可以声明一个方法应该返回一个枚举(见下文),但是如何实现这样的方法来返回除null之外的任何东西,或者对在方法外声明的枚举的引用呢?我的第一个倾向是调查使用泛型,但如果SO社区可以帮助我避免它们,我想避免任何延迟.
private Enum resources() {
return null;
}
Run Code Online (Sandbox Code Playgroud)
我认为你是对的,它只能返回null或在Enum其他地方宣布.但是你不一定要在编译时指定"别的东西".
class EnumEnumerator<T extends Enum<T>> implements Iterable<T> {
private final Class<T> enumClass;
public EnumEnumerator(Class<T> enumClass) {
this.enumClass = enumClass;
}
public Iterator<T> iterator() {
T[] values = enumClass.getEnumConstants();
return Arrays.asList(values).iterator();
}
}
Run Code Online (Sandbox Code Playgroud)
稍后,您通过专门化泛型构造函数并传入您感兴趣的枚举类来调用它:
class EnumEnumeratorDemo {
enum Foo {
BAR, BAZ, QUX;
@Override public String toString() {
return name().toLowerCase();
}
}
public static void main(String[] args) {
for (Foo f : new EnumEnumerator<Foo>(Foo.class)) {
System.out.println(f);
}
}
}
Run Code Online (Sandbox Code Playgroud)
(显然这是一个人为的例子,在现实生活中你应该只调用Foo.values(),但你明白了.)
| 归档时间: |
|
| 查看次数: |
34388 次 |
| 最近记录: |