java @SafeVarargs why do private methods need to be final

喜你入骨 提交于 2019-12-12 07:17:30

问题


I have a private method in an inner class which is private I would like to use the SafeVarargs annotation. However, I am required to either have a static or final method. Why does a private method need to be final as well? Isn't this redundant?


回答1:


It is redundant, and you bring up an excellent point.

I think the real reason for the requirement of final or static was to force that the method could not be overridden, and thus a subclass couldn't tamper with data in a way that made the @SafeVarargs annotation useless on the definition of the method.

But, although it is redundant, it's not that bad of a decision - many a time, programmers will make every method private as much as possible, and then slowly open the class up as needed. If this method is marked final when it is in private scope, then if the method has to be opened up, it can still have the @SafeVarargs annotation in place with only a change to the access level. If the final is removed intentionally, you'll get the compile time error, but if you had it already, whoever removes the private access (which may not be yourself, in a team-based environment) won't be confused as to why removing the "private" modifier suddenly makes the code no longer compile.




回答2:


This feature is part of Project Coin 2 and will be avalaible in Java 9 coming July 2017.

It's call Accepting @SafeVarargs on private methods.

Link.



来源:https://stackoverflow.com/questions/7728971/java-safevarargs-why-do-private-methods-need-to-be-final

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!