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

时间:2011-10-11 15:56:25

标签: java java-7

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

2 个答案:

答案 0 :(得分:16)

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

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

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

答案 1 :(得分:5)

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

调用私有方法接受@SafeVarargs。

Link.