java @SafeVarargs为什么私有方法需要是最终的

ini*_*ero 24 java java-7

我在内部类中有一个私有方法,它是私有的我想使用SafeVarargs注释.但是,我需要有静态或最终方法.为什么私有方法也必须是最终的?这不是多余的吗?

Met*_*002 16

这是多余的,你提出了一个很好的观点.

我认为最终或静态要求的真正原因是强制该方法无法被覆盖,因此子类不能以使得@SafeVarargs注释对方法的定义无用的方式来篡改数据.

但是,虽然它是多余的,但决策并不是那么糟糕 - 很多时候,程序员会尽可能地使每个方法都保密,然后根据需要慢慢打开课程.如果此方法在私有范围内被标记为final,那么如果必须打开该方法,它仍然可以使用@SafeVarargs注释,只需更改访问级别.如果有意删除了final,你会得到编译时错误,但是如果你已经有了,那么删除私有访问权的人(可能不是你自己,在基于团队的环境中)也不会混淆为什么删除"私有"修饰符突然使代码不再编译.

  • 如果错误消息类似于"无效的java.lang.SafeVarargs注释.实例方法......不是最终的也不是私有的",那么删除`private`的人就不会有任何混淆. (2认同)

chi*_*tiz 5

此功能是Project Coin 2的一部分,将于2017年7月在Java 9中提供。

这就是在私有方法上调用Accepting @SafeVarargs。

链接。