Calendar
을 사용하여 현재 연도에 액세스 할 수 있습니다. 경고 - 정적 필드 액세스 연도
이
은 ... 코드는 컴파일하고 잘 실행import java.util.Calendar;
Calendar c = c.getInstance();
int year = c.get(c.YEAR);
내 코드이지만, "경고, 정적 필드를 액세스"문제가 있습니다라는 경고 메시지를 표시하거나, 내가 일을해야 더 나은 뭔가?
Calendar
을 사용하여 현재 연도에 액세스 할 수 있습니다. 경고 - 정적 필드 액세스 연도
이
은 ... 코드는 컴파일하고 잘 실행import java.util.Calendar;
Calendar c = c.getInstance();
int year = c.get(c.YEAR);
내 코드이지만, "경고, 정적 필드를 액세스"문제가 있습니다라는 경고 메시지를 표시하거나, 내가 일을해야 더 나은 뭔가?
사용 Calendar.getInstance()
및 Calendar.YEAR
를 들어, 정적 필드는 인스턴스 객체를 사용하여 액세스 할 안 간다.
Calendar c = c.getInstance();
대신에 을 입력하십시오. getInstance()
메서드는 Calendar
클래스의 정적 메서드이므로 경고를받는 이유입니다.
ADD
동일 Calendar.YEAR
정적 필드가 객체의 런타임 유형이 아닌 컴파일 타임 유형을 사용하여 액세스되기 때문에 경고하기 때문에 버그를 찾기가 어려울 수 있습니다.
예 : 그것은에 "Hello World"를 인쇄 할 static
없이
public class AAA{
public static String HELLO = "HI";
}
public class BBB extends AAA{
public static String HELLO = "Hello World";
}
AAA test = new BBB();
System.out.println(test.HELLO); //Will print String from AAA
//instead of "Hello World"
.
이러한 버그를 방지하려면 인스턴스를 사용하는 대신 선언 된 클래스로 항상 정적 변수에 액세스해야합니다. 컴파일러는 class-name을 사용하지 않을 이유가 없으므로 경고합니다.
정적 필드에 액세스하는 것이 덜 분명하기 때문에 좋지 않습니다. –
더 확실한'c.getInstance()'를 놓쳤습니다. –
다른 누군가가 자신의 의견을 언급했는데 내 대답은 꽤 일반적인 것입니다. 누구나 논리적 인 단계를 밟을 수 있습니다. –