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

时间:2010-10-27 09:49:06

标签: 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

这可能吗?

3 个答案:

答案 0 :(得分:5)

class B extends A // Compile error

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

 class B extends A<D>  // compile error

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

答案 1 :(得分:2)

@Thilo是对的。

我想补充一点,尝试强制人们以特定方式使用您的课程是一个坏主意。他们可能有充分的理由以不同的方式使用您的代码。如果你试图强制使用特定的使用模式,最终可能会导致人们诉诸可怕的黑客攻击,分叉你的课程,或者干脆离开并实施自己的模式。

答案 2 :(得分:0)

这是IDE或外部质量管理工具(如Findbugs)的工作。您可以将Eclipse配置为将unchecked警告视为错误(您可以对大多数IDE执行相同的操作)。或者您可以配置Findbugs以使您的构建在相同类型的错误中失败。

是的,这些解决方案让您负责API的用户做出正确的事情,但这很可能是正确的。