我在内部类中有一个私有方法,它是私有的我想使用SafeVarargs注释。但是,我需要有静态或最终方法。为什么私有方法也必须是最终的?这不是多余的吗?
答案 0 :(得分:16)
这是多余的,你提出了一个很好的观点。
我认为最终或静态要求的真正原因是强制该方法无法被覆盖,因此子类不能以某种方式篡改数据,使得@SafeVarargs注释对定义无效方法。
但是,虽然它是多余的,但决策并不是那么糟糕 - 很多时候,程序员会尽可能地将每个方法都设为私有,然后根据需要慢慢打开课程。如果此方法在私有范围内被标记为final,那么如果必须打开该方法,它仍然可以使用@SafeVarargs注释,只需更改访问级别。如果有意删除了final,你会得到编译时错误,但是如果你已经有了,那么删除私有访问权的人(可能不是你自己,在基于团队的环境中)也不会混淆为什么删除“私有”修饰符突然使代码不再编译。
答案 1 :(得分:5)