내 직장에서 Java 코드를 발견하게됩니다. 이 시나리오는 다음과 같습니다. ClassA
과 ClassB
의 두 클래스가 있습니다.가져온 Java 클래스의 public static final 변수
ClassA
에는 그 중 4 개의 static final string 값을 제외하고는 아무 것도 없습니다. 그 목적은 ClassA.variable
과 같은 값을 사용하는 것입니다 (왜 내 코드가 아닌지 묻지 마십시오).
ClassB
수입품 ClassA
. 문자열 값을 ClassA
으로 편집하고 컴파일했습니다. ClassB
을 실행했을 때 새로운 값이 아닌 이전 값을 사용하고있는 것을 볼 수있었습니다. 나는 ClassA
에서 새로운 값을 사용하도록 ClassB
을 다시 컴파일해야했습니다! (ClassA
을 가져 오는 다른 클래스를 다시 컴파일해야했습니다!)
JDK 1.6 때문인가요? 아니면 이전에 다시 컴파일해야했는지 알고 있어야합니다 ClassB
! 나에게 계몽해라. :)
그래서 public static final은 컴파일 타임 상수입니까? 그걸 몰랐어. 그것이 상수라고 생각하고 런타임에 수정할 수 없습니다! 당신의 도움을 주셔서 감사합니다. –
좋은 설명. 변수가 인라인되어 있는지 확인하려면 javap을 사용하여 클래스가 컴파일 된 방식을 볼 수 있습니다. "javap -c Flags". –