package com.css.nestedclass;
import java.util.Arrays;
import java.util.Comparator;
//메서드가 1개인 인터페이스
interface Sample{
//추상메서드 선언
public void display();
}
//인터페이스를 구현한 클래스
class SampleImp implements Sample{
public void display() {
System.out.println("클래스를 만들어서 사용");
}
}
public class AnonymousMain {
public static void main(String[] args) {
//인터페이스를 구현한 클래스의 인스턴스를 생성해서 메서드 호출
//인스턴스를 여러개 만들어야한다면 클래스를 만드는것이 효율적
Sample sample = new SampleImp();
sample.display();
//Sample 인터페이스를 anonymous로 사용
//인스턴스가 1개만 필요하다면 클래스를 만들지 않는것이 효율적
new Sample() {
public void display() {
System.out.println("클래스를 생성하지 않고 사용");
}
}.display();
//배열의 정렬
String [] ar = {"아담", "강진축구" , "프리스톤테일", "카카오택시"};
//배열의 내림차순 정렬
//Arrays.sort(배열, 비교를 위한 Comparator<T>인터페이스를 구현할 클래스의 객체)
//를 호출해야 한다.
Arrays.sort(ar, new Comparator<String>() {
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
});
//배열의 요소를 빠르게 확인
System.out.println(Arrays.toString(ar));
//하나씩 확인
for(String app : ar) {
System.out.println(app);
}
}
}
package com.css.nestedclass;
public class Outer {
//내포클래스 = 다른 클래스 안에 만들어진 클래스
class Inner{
public int num;
}
//내포클래스 안에 static멤버가 있으면 인스턴스 생성없이 사용할 수 있도록 static을 추가
static class StaticInner{
public int num;
public static int share;
}
public void method() {
//메서드 안에 만들어진 클래스 : Local Inner
//메서드 안에서만 사용이 가능한 클래스
class LocalInner{
public int num;
}
}
}
댓글