개인 메서드에 전달할 개인 최종 인스턴스 변수가있는 경우 매개 변수로 전달할 때 함수에서 final 한정자를 사용하여 다시 선언해야합니까? 예 :중복 선언은 피해야합니까?
public class GraphAlgo {
private final source;
public GraphAlgo(source) {
this.source = source
}
public void runAlgo() {
runAlgoUsingSource(source);
}
private runAlgoUsingSource(final source) { // here final is declared on a final field
//-- whatever.
}
}
이미 최종적인 매개 변수에 대해 final을 선언하지 마십시오. 장점. 중복 최종 수정자를 방지 단점 : 명시 적 그림을 제공하지 않습니다. 예 : GraphAlgo가 10000 라인 코드이고 'runAlgoUsingSource'함수를 보면 '소스'가 최종인지 아닌지를 시각적으로 알 수 없습니다.
이 경우의 일반적인 규칙은 무엇입니까?
왜 이미 클래스의 멤버 인 경우 매개 변수로 전달하겠습니까? – aaronman
이러한 변수 유형을 지정하고 혼동을 피하기 위해 다른 구문 오류를 수정하십시오. –
두 개의'source' 변수는 완전히 다릅니다! 'GraphAlgo.source'는'runAlgoUsingSource'의 로컬 변수'source'와는 아무런 관련이 없습니다. 그들은 다른 유형을 가질 수 있습니다. 하나는 원시적 인 반면 다른 하나는 참조입니다. 당신이 그들을 혼동하지 않도록하는 것이 중요합니다. – yshavit