이 항목에서는 인터페이스에 상수를 기록한다라는 어처구니 없는 인터페이스의 사용법을 예로 들었다.
interface DEFINE {
	static final int MAX=10;
}

class A implements DEFINE{
	public static void main(String[] args) {
		System.out.println(DEFINE.MAX);
		System.out.println(MAX);
	}
}
위의 DEFINE 인터페이스는 상수 MAX를 저장하기 위해서 사용되었다. 상수MAX를 쓰기 위해서는 DEFINE.MAX라고 적어야되는데 implements DEFINE 를 해주면 DEFINE 를 안적어도 된다!

우왕ㅋ굳ㅋ 킹왕짱!!

이라고 생각하는 사람은......

하여튼 저런 어처구니 없는 형태의 인터페이스 사용을 하지 말자는것이다. 저런 형태로상수를 저장하는 클레스를 만들겠다면 private 생성자를 만들어서 객체 생성을 막고 DEFINE.MAX를 호출해줘야한다.

그리고 DEFINE. 이 적기 귀찬다면? import static가 있다.
package a;
public class DEFINE {
	public static final int MAX=10;
	private DEFINE() {
	}
}
package a;
import static a.DEFINE.*;
public class A {
	public static void main(String[] args) {
		System.out.println(MAX);
	}
}

이런식으로 사용하려면 기본패키치에서는 안된다는 점이 있지만.. 기본패키지는 이제 그만쓸때도 되었다.

결론은 인터페이스라는 녀석은 타입을 정의할때만 쓰라는거다.
너무 당연한 이야기라 나도 어처구니가 없지만 저자가 이렇게 하는 사람때문에 크게 데인적이 있나보다..
Posted by 동적할당
: