Enum과 innerClass

최준호·2021년 7월 6일
0

java

목록 보기
10/25

Enum이란

Enum은 상수를 가지고 생성되는 객체들을 한곳에 모아둔 묶음이다. 상수들을 필요한 만큼 모두 정희하는 것도 개발자에겐 귀찮은 일이므로 Enum이란 class에서 한번에 정의할 수 있는 것이다.

[접근제한] enum [enum class 이름] {
	...
}

과 같이 정의할 수 있다.

public enum Ex{
	JAVA, XML, JSON
}

public static void main(String[] args){
	Ex java = Ex.JAVA;
    
    System.out.println("EX java : "+ java);
    System.out.println("EX json : "+ java.json);
}

과 같이 상수를 하나의 묶음에서 객체처럼 가져와서 사용할 수 있다.

Enum의 원리

Enum은 그저 상수의 이름만 갖고 있는 것이 아닌 값도 가지고 있을 수 있다.

public enum Ex{
        JAVA, XML, JSON
}

public static void main(String[] args) {
        for(Ex e : Ex.values()){
            System.out.print(e);
            System.out.println(" = " + e.ordinal());
        }
}

위 코드를 실행하면

다음과 같은 결과를 확인할 수 있다. 이 결과를 통해 우리가 알 수 있는 것은 Enum은 객체들을 배열로 관리한다는 것과 특정 값을 대입하지 않았을 땐 0부터 1씩 증가하여 값을 자동으로 넣어서 관리하고 있다는 것이다.

inner class

inner class란 class안에 또 다른 class가 정듸되는 것을 의미한다.

class Outer{
	class inner{
    	...
    }
}

다음과 inner 같이 선언하여 사용할 수 있다.

Anonymous 내부 클래스

inner class를 익명으로 생성하여 사용할 수 있는데. 이는 한번만 사용하고 버려지는 객체를 사용할 때 유용한 내부 클래스이다.

interface TestInner{
    int data = 1000;
    public void printData();
}

public class Outer {
    public static void main(String[] args) {
        new TestInner(){
            @Override
            public void printData() {
                System.out.println(TestInner.data);
            }
        }.printData();
    }
}

다음과 같이 인터페이스가 존재할 때 인터페이스를 정의하지 않고 한번만 사용하기 위해 내부에서 new 예약어를 통해 객체를 생성하면서 class를 정의해주며 class에서 바로 메서드를 실행시킬 수 있다.

다음과 같이 결과값도 확인해 볼 수 있다.

profile
해당 주소로 이전하였습니다. 감사합니다. https://ililil9482.tistory.com

0개의 댓글