문제
정적 변수에서 최종 변수에 액세스 할 수없는 이유는 무엇입니까? 컴파일 시간에 그들은 단순히 값으로 직접 대체하여 정적 방법으로도 사용할 수 있어야합니다.
이 제한은 왜 ???
해결책
전부는 아닙니다 final
변수는 컴파일 시간 상수입니다. 뿐 static final
변수는 컴파일러로 컴파일 타임 상수로 대체 할 수 있습니다. final
특정 경우 수정자는 보장하는 데만 사용됩니다 const-correctness.
그리고 static
이러한 변수는 동일한 클래스의 다른 인스턴스에 대해 다른 값을 가질 수 있으므로 메소드는 비 정적 변수에 액세스 할 수 없습니다.
다른 팁
정적 = 클래스에서.
final = 값을 변경하지는 않지만 (정적이 아닌 경우 각 인스턴스의 경우).
examply로 당신은 할 수 있습니다 :
public class Weird
{
private static long number = System.getTimeInMilis();
private final long created = System.getTimeInMilis();
}
이상한 객체를 만들 때마다 생성 된 값이 다른 값을 포함합니다.
그러나 이상한 것의 가치는 클래스가로드 된 시간입니다.
왜 a static
메소드는 액세스 할 수 없습니다 final
인스턴스 변수 (최종 멤버 변수가 항상 코드에서 문자 그대로 또는 상수 값으로 설정되어 있음을 가정 함) (클래스의 다른 인스턴스가 동일한 값에 대해 다른 값을 가질 수 있기 때문에. final
인스턴스 변수 (예 : 생성자를 통해 설정할 수 있음). ㅏ static
메소드는 클래스의 특정 인스턴스에 대한 지식이 없으며 액세스 할 수 있습니다. static final
변수.
제휴하지 않습니다 StackOverflow