본문 바로가기

PL/Java

[Java] private final vs final private

개요

클래스 내부에서만 사용하기 위해 private, 상수로써 사용하기 위해 final을 쓰고자 할 때 어떤 순서로 쓰는 것이 맞을까?
순서가 달라짐에 따라 어떤 차이가 있을까?

차이는 없다

일단, 둘의 차이는 전혀 없다. 완벽하게 동일한 의미이다.
하지만 차이가 없다고 해서 어떤 때는 private final로 쓰고, 어떤 때는 final private으로 쓰면 통일성도 없고 어수선해 보일 것이다.

이런 순서에 대한 컨벤션은 무엇일까?

정답은 자바 스펙에

구글의 자바 스타일 가이드도, OpenJDK 커뮤니티에서 만든 스타일 가이드도 모두 자바 스펙에서 써준 순서를 따를 것을 권장하고 있다.
자바 스펙에 따르면 private final로 쓰는 것이 바람직하다.

관련 링크

stackoverflow.com/questions/16731240/what-is-a-reasonable-order-of-java-modifiers-abstract-final-public-static-e

google.github.io/styleguide/javaguide.html#s4.8.7-modifiers

cr.openjdk.java.net/~alundblad/styleguide/index-v6.html#toc-modifiers

docs.oracle.com/javase/8/docs/api/java/lang/reflect/Modifier.html

docs.oracle.com/javase/specs/jls/se15/html/index.html