문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 | |||
study:java:javachobo:appendix [2010/03/19 22:23] gauryan |
study:java:javachobo:appendix [2010/03/21 14:48] gauryan |
||
---|---|---|---|
줄 165: | 줄 165: | ||
} | } | ||
</ | </ | ||
- | 위와 같이 선언된 메서드가 있을 때, 이 메서드의 매개변수로는 | + | 위와 같이 선언된 메서드가 있을 때, 이 메서드의 매개변수로는 |
<code java> | <code java> | ||
줄 229: | 줄 229: | ||
System.out.println(u); | System.out.println(u); | ||
} | } | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | Collections 클래스의 sort() 메서드의 선언부를 보면 다음과 같다. | ||
- | <code java> | ||
- | public static <T extends Comparable<? | ||
- | --------------------------------- | ||
- | | ||
- | </ | ||
- | - ArrayList 와 같이 List 인터페이스를 구현한 컬렉션을 매개변수의 타입으로 정의하고 있다. 그리고 그 컬렉션에는 ' | ||
- | - ' | ||
- | <code java> | ||
- | public interface Comparable< | ||
- | public int compareTo(T o); // 지정한 타입 T를 매개변수로 한다. | ||
- | } | ||
- | </ | ||
- | Comparable 의 실제소스는 위와 같으며 이를 구현한 클래스의 예는 다음과 같다. | ||
- | <code java> | ||
- | class Student extends Person implements Comparable< | ||
- | Student(int id, String name) { | ||
- | super(id, name); | ||
- | } | ||
- | | ||
- | public int compareTo(Person o) { | ||
- | return this.id - o.id; | ||
- | } | ||
- | } | ||
- | |||
- | class Person { | ||
- | int id; | ||
- | String name; | ||
- | | ||
- | Person(int id, String name) { | ||
- | this.id = id; | ||
- | this.name = name; | ||
- | } | ||
- | | ||
- | public String toString() { | ||
- | return id + ":" | ||
- | } | ||
- | } | ||
- | </ | ||
- | Collections 의 sort()의 매개변수가 Comparable에 사용될 수 있는 타입이 Comparable 을 구현하는 클래스(Student)나 그 조상(Person)일 수 있다고 하였기 때문에 Student 객체를 담은 ArrayList 는 sort() 의 매개변수가 될 수 있는 모든 조건을 충족시킨다. | ||
- | |||
- | * 예제 : GenericsEx2.java <code java> | ||
- | import java.util.*; | ||
- | |||
- | class Unit {} | ||
- | class Tank extends Unit {} | ||
- | class Dropship extends Unit {} | ||
- | |||
- | class GenericsEx2 { | ||
- | ArrayList< | ||
- | list.add(new Student(10, " | ||
- | list.add(new Student(40, " | ||
- | list.add(new Student(20, " | ||
- | list.add(new Student(30, " | ||
- | Conllections.sort(list); | ||
- | | ||
- | for(Person p : list) { | ||
- | System.out.println(p); | ||
- | } | ||
- | } | ||
- | |||
- | class Student extends Person implements Comparable< | ||
- | Student(int id, String name) { | ||
- | super(id, name); | ||
- | } | ||
- | | ||
- | // Comparable< | ||
- | public int compareTo(Person o) { | ||
- | return this.id - o.id; | ||
- | } | ||
- | } | ||
- | |||
- | class Person { | ||
- | int id; | ||
- | String name; | ||
- | | ||
- | Person(int id, String name) { | ||
- | this.id = id; | ||
- | this.name = name; | ||
- | } | ||
- | | ||
- | public String toString() { | ||
- | return id + ":" | ||
} | } | ||
} | } |