본문 바로가기

Java85

50.익명 내부 클래스의 활용 지역 내부 클래스 - 지역 변수와 같이 메서드 내부에서 정의하여 사용하는 클래스 - 메서드의 호출이 끝나면 메서드에 사용된 지역변수의 유효성은 사라짐 - 메서드 호출 이후에도 사용해야 하는 경우가 있을 수 있으므로 지역 내부 클래스에서 사용하는 메서드의 지역 변수나 매개 변수는 final로 선언됨 예제 - AnnonymousInnerTest.java class Outer2{ int outNum = 100; static int sNum = 200; Runnable getRunnuble(int i) { int num = 10; class MyRunnable implements Runnable{ int localNum = 1000; @Override public void run() { System.out.pr.. 2022. 6. 1.
49.여러 내부클래스의 정의와 유형 내부 클래스(inner class) - 클래스 내부에 선언한 클래스로 이 클래스를 감싸고 있는 외부 클래스와 밀접한 연관이 있는 경우가 많고, 다른 외부 클래스에서 사용할 일이 거의 없는 경우에 내부 클래스로 선언해서 사용함 - 중첩 클래스라고도 함 - 내부 클래스의 종류 : 1. 인스턴스 내부 클래스 2. 정적(static) 내부 클래스 3. 지역(local) 내부 클래스 4. 익명(anonymous) 내부 클래스 인스턴스 내부 클래스 - 내부적으로 사용할 클래스를 선언(private으로 선언하는 것을 권장) - 외부 클래스가 생성된 후 생성됨(정적 내부 클래스와 다름) - private이 아닌 내부 클래스는 다른 외부 클래스에서 생성할 수 있음 OutClass outClass = new OutClas.. 2022. 6. 1.
48.쌍(pair)으로 자료를 관리하는 Map 인터페이스 HashMap 클래스 활용 - Map 인터페이스를 구현한 클래스 - 가장 많이 사용되는 Map 인터페이스 기반 클래스 - key - value를 쌍으로 관리하는 메서드를 구현 - 검색을 위한 자료구조 - key를 이요하여 값을 저장하고 key를 이용하여 값을 꺼내오는 방식 - hash 알고리즘으로 구현됨 - key가 되는 객체는 중복될 수 없고 객체의 유일성을 비교하기 위한 equals()와 hashCode() 메서드를 구현해야함 예제 - Member.java public class Member implements Comparator{ private int memberId; private String memberName; public Member() {} public Member(int memberId,.. 2022. 5. 31.
47.정렬을 위한 comparable과 comparator 인터페이스 구현 TreeSet 클래스 활용 - 객체의 정렬에 사용하는 클래스 - Set 인터페이스를 구현하여 중복을 허용하지 않고, 오름차순이나 내림차순으로 객체를 정렬할 수 있음 - 내부적으로 이진검색트리(binary search tree)로 구현됨 - 이진검색트리에 저장하기 위해 각 객체를 비교해야 함 - 비교 대상이 되는 객체에 Comparable 이나 Comparator 인터페이스를 구현해야 TreeSet에 추가될 수 있음 - String, Integer 등 JDK의 많은 클래스들이 이미 Comparable을 구현했음 @Override public int compareTo(Member member) { if(this.memberId > member.memberId) return 1; else if(this.mem.. 2022. 5. 31.