据我所知,使用上限有限泛型并使用超类作为方法参数都接受相同的可能参数.哪个是首选,两者之间有什么区别?
上限有限泛型作为参数:
public <T extends Foo> void doSomething(T foo) {}
Run Code Online (Sandbox Code Playgroud)
超类作为参数:
public void doSomething(Foo foo) {}
Run Code Online (Sandbox Code Playgroud) 我使用Eclipse收到此错误.
重复的局部变量斗篷
我真的不明白为什么我会遇到这样的错误.这是我的代码:
switch (frame) { // frame is an integer
case 0:
Sprite cape = modules.get(Module.CAPE);
//cape.setRegion(region);
cape.translateY(+1);
break;
case 1:
Sprite cape = modules.get(Module.CAPE);
//cape.setRegion(region);
cape.translateY(-1);
break;
default:
throw new IllegalArgumentException(
"Undefined frame number: " + frame);
}
Run Code Online (Sandbox Code Playgroud)
为什么cape变量对于每种情况都是本地的,而不是switch语句?
如果我要宣布这样的枚举
public enum Foo {A, B, C}
Run Code Online (Sandbox Code Playgroud)
然后我可以使用枚举值
Foo[] values = Foo.values();
Run Code Online (Sandbox Code Playgroud)
但是,如果我想将Foo作为泛型类型传递,就像这样,我无法获取值,因为它是通用的.
class Bar<E extends Enum<E>> {
public Bar(E e) {
E[] values = e.values(); // not possible
}
}
Run Code Online (Sandbox Code Playgroud)
是否有可能以任何其他方式迭代枚举值?