자바 익명 클래스(java annoymous class)
이름이 없이 포함된 클래스(일단 new 해놓고 그 안에서 클래스 정의를 구현)
이름이 없다는 점을 제외하면 지역 클래스와 유사 하다.
형식 : new 클래스이름(인터페이스 이름) (…) {…}
제공된 클래스나 인터페이스의 익명 하위 클래스를 정의한 후 그 하위 클래스의 객체를 생성하고 그 참조 값을 반환 한다.
New 수식이 올 수 있는 곳 어디든지 사용 가능하다.
생성자를 정의 할 수 없다.
쓰레드나 리스너 제작할 때 많이 사용한다.
이름이 없다는 점을 제외하면 지역 클래스와 유사 하다.
형식 : new 클래스이름(인터페이스 이름) (…) {…}
제공된 클래스나 인터페이스의 익명 하위 클래스를 정의한 후 그 하위 클래스의 객체를 생성하고 그 참조 값을 반환 한다.
New 수식이 올 수 있는 곳 어디든지 사용 가능하다.
생성자를 정의 할 수 없다.
쓰레드나 리스너 제작할 때 많이 사용한다.
익명 클래스는 new 수식의 연장 이므로 반드시 세미콜론(;)을 붙여야 한다.
익명 클래스를 포함하고 있는 메소드의 지역 변수중 final로 선언된 변수만 참조 가능하다.
해당 클래스나 인터페이스를 정의하여 사용 할 때 여러 곳에서 사용되는 것이 아니라 단 한번만 정의해서 사용 하는 경우에 유용하다.
[예제]
interface MyRunnable
{ public void run(); }
{ public void run(); }
class LocalClassExam
{
String str;
LocalClassExam(String str) {
this.str = str;
}
//getRunnable 메소드 안에 Command 클래스 정의, local class
//int i를 final로 정의안하면 run()안에서 사용불가
MyRunnable getRunnable(final int i) {
//아래 new 다음에 인터이스가 와도 됨 물론 클래스도된다.
return new MyRunnable() {
public void run() {
System.out.println( str + ", " + i ); //로컬변수 i는 final 임
}
};
}
{
String str;
LocalClassExam(String str) {
this.str = str;
}
//getRunnable 메소드 안에 Command 클래스 정의, local class
//int i를 final로 정의안하면 run()안에서 사용불가
MyRunnable getRunnable(final int i) {
//아래 new 다음에 인터이스가 와도 됨 물론 클래스도된다.
return new MyRunnable() {
public void run() {
System.out.println( str + ", " + i ); //로컬변수 i는 final 임
}
};
}
public static void main(String[] args) {
LocalClassExam obj = new LocalClassExam( "OnJOracleJava" );
MyRunnable run1 = obj.getRunnable(1);
run1.run();
MyRunnable run2 = obj.getRunnable(2);
run2.run();
}
}
LocalClassExam obj = new LocalClassExam( "OnJOracleJava" );
MyRunnable run1 = obj.getRunnable(1);
run1.run();
MyRunnable run2 = obj.getRunnable(2);
run2.run();
}
}
[결과]
OnJOracleJava, 1
OnJOracleJava, 2
OnJOracleJava, 2
[개강확정강좌]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주간]
[11/4]Spring3.X, MyBatis, Hibernate실무과정
[11/6]SQL초보에서실전전문가까지
[평일야간]
[11/1]C#,ASP.NET마스터
[11/5]iPhone 하이브리드 앱 개발 실무과정
[11/7]JAVA&WEB프레임워크실무과정
[11/8]Spring3.X, MyBatis, Hibernate실무과정
[주말]
[11/2]C#,ASP.NET마스터
[11/2]Spring3.X, MyBatis, Hibernate실무과정
[11/2]JAVA&WEB프레임워크실무과정
[11/9]안드로이드개발자과정
[주간]
[11/4]Spring3.X, MyBatis, Hibernate실무과정
[11/6]SQL초보에서실전전문가까지
[평일야간]
[11/1]C#,ASP.NET마스터
[11/5]iPhone 하이브리드 앱 개발 실무과정
[11/7]JAVA&WEB프레임워크실무과정
[11/8]Spring3.X, MyBatis, Hibernate실무과정
[주말]
[11/2]C#,ASP.NET마스터
[11/2]Spring3.X, MyBatis, Hibernate실무과정
[11/2]JAVA&WEB프레임워크실무과정
[11/9]안드로이드개발자과정
댓글 없음:
댓글 쓰기