Java的.如何禁止使用原始泛型?

joy*_*tor 2 java generics

嗨,我正在编写报告系统,并希望最终用户指定类型,如果他扩展我的课程.

class A <T extends C>
{...}

class B extends A // Compile error
{...}

class B extends A<D> // Compile error
{...}

class B extends A<C> // Success
Run Code Online (Sandbox Code Playgroud)

那可能吗?

Thi*_*ilo 5

class B extends A // Compile error
Run Code Online (Sandbox Code Playgroud)

不,为了向后兼容,Java中的泛型是可选的.你不能强迫程序员使用它们.这只会产生一个警告("不要使用原始类型").

 class B extends A<D>  // compile error
Run Code Online (Sandbox Code Playgroud)

如果他们确实使用泛型,他们必须是正确的.在D与规范不匹配的情况下,这将是编译器错误.