본문 바로가기
JAVA

221028 Anonymous Class

7.Anonymous Class(익명 객체 또는 익명 클래스-클래스 이름이 없는 클래스)
=>작성하는 방법을 알아두어야 함!
=>인터페이스를 구현하거나 클래스를 상속받아서 사용을 하고자 하는 경우에 별도의 클래스를 생성하지 않고 사용하는 방법
=>상속이나 구현을 하는 클래스를 만들지 않고 활용

new 인터페이스이름이나 상위클래스이름(매개변수 나열){
필요한 메서드 정의
};

 

package java_1028.Anonymous;

import java.util.Arrays;
import java.util.Comparator;

//메서드가 1개인 인터페이스
interface Sample{
	//추상 메서드 선언
	public void display();
}

//인터페이스를 구현한 클래스
class SampleImp implements Sample{

	@Override
	public void display() {
		System.out.println("클래스를 만들어서 사용");
	}

}



public class AnonymousMain {
	public static void main(String[] args) {
		//인터페이스를 구현한 클래스의 인스턴스를 생성해서 메서드 호출
		//인스턴스를 여러 개 만들어야 한다면 클래스를 만드는 것이 효율적
		Sample sample = new SampleImp();
		sample.display();
        
        
		//Sample 인터페이스를 annonymous로 사용 
		//인스턴스가 1개만 필요하다면 클래스를 만들지 않는 것이 효율적
		new Sample(){
			public void display() {
				System.out.println("클래스를 생성하지 않고 사용");}
		}.display();
		
		//배열의 정렬
		String[] str = {"아담", "이브", "카인", "골리앗", "야훼"};
		
		//배열의 내림차순 정렬
		//Arrays.sort(배열, 비교를 위한 Comparator<T> 인터페이스를 구현한 클래스의 객체)를 호출해야 함
		Arrays.sort(str, new Comparator<String>() {//sort는 한번만 쓸 거니까 Anonymous 사용
			@Override
			public int compare(String o1, String o2) {
				return o2.compareTo(o1);
			}});
		//배열의 요소를 빠르게 확인
		System.out.println(Arrays.toString(str));
		
		//하나씩 확인
		for(String s : str) {
			System.out.print(s+"\s");
		}
		
	}
}
클래스를 만들어서 사용
클래스를 생성하지 않고 사용
[카인, 이브, 야훼, 아담, 골리앗]
카인 이브 야훼 아담 골리앗

'JAVA' 카테고리의 다른 글

221028 Stream API  (0) 2022.10.28
221028 Lambda  (0) 2022.10.28
221028 Nested Class(내포 클래스)-(Embedding)  (0) 2022.10.28
221027 Serializable, DTO  (0) 2022.10.27
221027 Character Stream  (0) 2022.10.27