我以为我很了解Java泛型,但后来我在java.lang.Enum中遇到了以下内容:
class Enum<E extends Enum<E>>
Run Code Online (Sandbox Code Playgroud)
有人可以解释如何解释这个类型参数?用于提供可以使用类似类型参数的其他示例的加分点.
在研究另一个问题时,我碰到了1.8.0_112 Sun-Oracle编译器的这种有趣行为(我没有和其他人一起测试过):
import java.util.List;
interface Alpha<T> {
List<Integer> intList();
}
interface Beta {
List<Integer> intList();
}
class Main {
public static void main(String[] args) {
Alpha rawAlpha = null;
Alpha<Character> charAlpha = null;
Alpha<?> qmAlpha = null;
Beta beta = null;
for (Integer i : charAlpha.intList()) {}
for (Integer i : qmAlpha.intList()) {}
for (Integer i : beta.intList()) {}
for (Integer i : rawAlpha.intList()) {}
}
}
Run Code Online (Sandbox Code Playgroud)
编译器仅在最后一个for循环中失败:
error: incompatible types: Object cannot be converted to …Run Code Online (Sandbox Code Playgroud)