为什么注释@SafeVarargs不能应用于非最终实例方法?

时间:2014-07-28 12:16:52

标签: java generics variadic-functions

为什么注释@SafeVarargs不能应用于非最终实例方法?

1 个答案:

答案 0 :(得分:23)

如果您声明@SafeVarargs,那么您必须确定它实际上是安全的。如果方法是非final的,则可以在子类中重写它。这种覆盖可能不安全。

通过要求方法为final,开发人员可以保证他所做的声明(即其使用的varargs是安全的)实际上总是正确的(前提是开发人员实际提供了一个安全的varargs方法)并且它实际上并没有被子类错误地重新实现该方法所打破。