지역 중첩 클래스란 메소드 안에 클래스를 만드는 것을 의미한다. 메소드 자체가 일회성 코드를 보관하는 도구이기 때문에 지역 중첩 클래스도 메소드 실행 시 일시적으로 생성되는 일회성 클래스의 성격을 강하게 띈다.
지역 중첩 클래스의 형태
지역 중첩 클래스는 다음 형태로 구현한다.
publicclassOuter {//외부 클래스publicvoidtestMethod() {//메소드classInner {//지역 중첩 클래스 } }}
메소드 내부에서 생성되고 사용되므로 외부에서 접근이나 참조가 불가능하다.
지역 중첩 클래스의 활용 예시
Bluemarble.java
publicclassBluemarble {publicvoiddice(){//1회용 주사위세트 클래스 생성classDiceSet {int first, second;voidgenerate(){Random r =newRandom();this.first=r.nextInt(6) +1;this.second=r.nextInt(6) +1; }voidprint(){System.out.println("첫번째 = "+ first +", 두번째 = "+second); }intgetTotal(){returnthis.first+this.second; } }//지역중첩 클래스 객체 생성 및 기능 호출(같은 메소드)DiceSet set =newDiceSet();set.generate();set.print();System.out.println("합계 = "+set.getTotal()); }}
publicclassInnerClassExample05 {publicstaticvoidmain(String[] args){Bluemarble game =newBluemarble();game.dice(); }}
지역 중첩 클래스는 그리 자주 사용되지는 않으나 메소드의 내용이 복잡할 경우 이를 간소화 할 수 있는 효과가 있다.