2016-08-26 3 views
0

에 확인. 다음을 통해FinalClass은 내가 볼 <a href="http://checkstyle.sourceforge.net/config_design.html#FinalClass" rel="nofollow">FinalClass</a> 체크 문서에서 Checkstyle

final class Util { private Util{} } 

:

의 이점은 무엇입니까?

class Util { private Util{} } 

어쨌든 Util을 서브 클래 싱 할 수 없으므로 전혀 가치가 없습니다. 숨겨진 이유가 있습니까?

+2

귀하의 의도를 분명히합니다. –

+0

그리고 그 이상으로 컴파일러/JIT는 명시 적으로 ** 최종 ** 표시된 항목에 대해 더 많은 최적화를 수행 할 수 있습니다. – GhostCat

+0

클래스'확장 Util'을 delcared하면,'super'에 생성자가 없다는 사실을 알아 차릴만큼 똑똑하지 않을 것이라고 생각합니다. 컴파일러는'final'을 강제함으로써 클래스가 확장 될 수 없다는 것을 안다. – Zircon

답변

1

당신은 백분율을 확장하려고하면 그 차이를 볼 수 있었다 :

public class BetterUtil extends Util 

오류 : (6, 8) 자바 : 백분율()가 de.demo.Util에 개인 접근을하고있다

최종으로 표시된 경우 아무도이 실수를하지 않습니다.

+0

하지만'private' 코드로만'class'를 확장 할 수는 없지만 컴파일러 오류는 _different_이지만 컴파일되지 않습니다 : "_Util()은 com.mypackage.Util_에 개인 액세스 권한이 있습니다". –

관련 문제