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

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

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

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

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

此function是Project Coin 2的一部分,将于2017年7月在Java 9中实现。

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

链接。