내부 클래스 내부에 부울 플래그를 설정해야 할 때가 종종 자바 코드에 상황이 있습니다. 이 내부 클래스는 외부에서 최종 변수 일 수 있기 때문에, 그것을 위해 기본 부울 형식을 사용할 수 없습니다, 그래서 나는 다음과 같은 패턴을 사용 :내부 클래스의 부울 플래그에 대한 최종 변수가 아닌 최종 배열 패턴
// class from gnu.trove is not of big importance, just to have an example
private final TIntIntHashMap team = new TIntIntHashMap();
// ....... code ............
final boolean[] flag = new boolean[]{false};
team.forEachValue(new TIntProcedure() {
@Override
public boolean execute(int score) {
if(score >= VICTORY_SCORE) {
flag[0] = true;
}
return true; // to continue iteration over hash map values
}
});
// ....... code ..............
마지막 배열의 패턴 대신이 아닌 최종 변수 작품 잘, 저에게 충분히 아름답게 보이지 않는 것을 제외하고는. 누군가가 Java에서 더 나은 패턴을 알고 있습니까?
대신의 매우 일반적인'forEachValue'를 사용하여, 기존 방법을 사용하거나 더 나은 use-에 맞는 자신 만의 방법을 쓸 수 케이스. 물론'exists (Iterator it, Predicate p)'또는'count (Iterator it, Predicate p) '와 같이 매우 일반적인 것을 사용할 수 있습니다. 나는이 명령형 접근법 대신에 기능적 접근법이 훨씬 깨끗하다고 생각합니다. –
Java에서 FP 구문을 사용하려고 시도한 결과, 마침내 포기했습니다. 가독성, 정확성 또는 다른 바람직한 코드 기능을 촉진하지 않습니다. Java 8이 이제는 닫히기 때문에, 기다리지 않는 이유는 거의 없습니다. –