체크 스타일은 private 클래스 변수에 대해 "final 선언이 필요합니다"라고 표시합니다. 최종 생성자에서 초기화에 오류를 줄 것이다대로 최종 그러나 선언 X 같은 X를 선언 호출 위의 경우클래스 변수에 대한 Checkstyle
class Test {
private int x=1;
public void set(int x) {
this.x = x;
}
}
. 그 잡은 거니?
체크 스타일은 private 클래스 변수에 대해 "final 선언이 필요합니다"라고 표시합니다. 최종 생성자에서 초기화에 오류를 줄 것이다대로 최종 그러나 선언 X 같은 X를 선언 호출 위의 경우클래스 변수에 대한 Checkstyle
class Test {
private int x=1;
public void set(int x) {
this.x = x;
}
}
. 그 잡은 거니?
private
및 static
필드를 설정자를 통해 수정할 수 있도록하는 것이 좋지 않은 스타일입니다. 다음 중 하나를 수행해야합니다.
1) 필드를 x
final
으로 만들고 set
메서드를 제거하십시오.
중 하나
2
) 필드x
비 정적 (
static
키워드를 제거)하기는, 다음은
final
하도록 요구되지 않습니다. 마지막으로
그러나 선언 X는 정적 필드 static block를 사용 초기화하려면 생성자
에 초기화에 오류를 줄 것이다. 이 final
되어야하는 이유
는 그리고 ... 그 이유는 private static
하고 외부에서 액세스 할 수 없습니다
final
가 될 필요하지 않은 경우static
그래서하지 않습니다, 중 static
을 제거 또는 코드의 다른 부분, 이제 final private static
를 사용 :
public void set(int x) {
this.x = x;
}
문제 :
static
필드는 this
을 사용하여 액세스하면 안됩니다.정적 최종 필드 값을 변경할 수 없습니다. 당신이 정말로 정적 X를해야하는 경우
는 정적 메서드에서 "이"사용할 수 없음을 명심
public static void setX(int newX){
[...]
에 방법을 변경합니다.
이렇게하면 문제가 해결됩니다.
경고를 발생시키는 수표의 이름은 무엇입니까? – obourgain
솔루션이 더 도움이되었을 것입니다 .... 그리고 이것은 단지 4 줄의 코드입니다 ... –
@ obourgain : 필드는 최종 선언되어야합니다 –