사용자 도구

사이트 도구


study:java:javachobo:appendix

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
study:java:javachobo:appendix [2010/03/19 22:11]
gauryan
study:java:javachobo:appendix [2010/03/19 22:22]
gauryan
줄 193: 줄 193:
 **[주의]** 여기서 만일 Unit이 클래스가 아닌 인터페이스라 할지라도 키워드로 'implements'를 사용하지 않고 클래스와 동일하게 'extends'를 사용한다는 것에 주의하자. **[주의]** 여기서 만일 Unit이 클래스가 아닌 인터페이스라 할지라도 키워드로 'implements'를 사용하지 않고 클래스와 동일하게 'extends'를 사용한다는 것에 주의하자.
  
-예제 : /GenericsEx1.java +예제 : /GenericsEx1.java <code java>
-<code java>+
 import java.util.*; import java.util.*;
  
줄 247: 줄 246:
 } }
 </code> </code>
 +Comparable 의 실제소스는 위와 같으며 이를 구현한 클래스의 예는 다음과 같다.
 +<code java>
 +class Student extends Person implements Comparable<Person> {
 +    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 + ":" + name;
 +    }
 +}
 +</code>
 +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<Student> list = new ArrayList<Student>();
 +    list.add(new Student(10, "Kim"));
 +    list.add(new Student(40, "Lee"));
 +    list.add(new Student(20, "Park"));
 +    list.add(new Student(30, "Jung"));
 +    Conllections.sort(list);
 +    
 +    for(Person p : list) {
 +        System.out.println(p);
 +    }
 +}
 +
 +class Student extends Person implements Comparable<Person> {
 +    Student(int id, String name) {
 +        super(id, name);
 +    }
 +    
 +    // Comparable<Person> 이므로 Person 타입의 매개변수를 선언.
 +    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 + ":" + name;
 +    }
 +}
 +</code>
 +
 ===== 타입에 안전한 열거형 (Typesafe enums) ===== ===== 타입에 안전한 열거형 (Typesafe enums) =====
 이전까지 자바는 C언어와 달리 열거형이라는 것이 존재하지 않았으나 새로 추가되었다. 자바의 열거형은 C언어의 열거형보다 더 향상된 개념의 열거형으로 열거형이 갖는 값 뿐만아니라 타입까지 관리하기 때문에 보다 논리적인 오류를 줄일 수 있다. 이전까지 자바는 C언어와 달리 열거형이라는 것이 존재하지 않았으나 새로 추가되었다. 자바의 열거형은 C언어의 열거형보다 더 향상된 개념의 열거형으로 열거형이 갖는 값 뿐만아니라 타입까지 관리하기 때문에 보다 논리적인 오류를 줄일 수 있다.
줄 280: 줄 353:
 </code> </code>
  
-예제 : EnumEx.java +예제 : EnumEx.java <code java>
-<code java>+
 import java.util.*; import java.util.*;
  
줄 354: 줄 426:
 가변인수를 사용할 때 한 가지 주의해야할 점은 오버로딩을 하는 경우인데, 먼저 예제를 살펴보고 그 다음에 자세히 설명하겠다. 가변인수를 사용할 때 한 가지 주의해야할 점은 오버로딩을 하는 경우인데, 먼저 예제를 살펴보고 그 다음에 자세히 설명하겠다.
  
-예제 : VarArgsEx1.java +예제 : VarArgsEx1.java <code java>
-<code java>+
 class VarArgsEx1 { class VarArgsEx1 {
     public static void main(String[] args) {     public static void main(String[] args) {
줄 404: 줄 475:
 </code> </code>
  
-예제 : StaticImportEx1.java +예제 : StaticImportEx1.java <code java>
-<code java>+
 import static java.lang.System.out; import static java.lang.System.out;
 import static java.lang.Math.*; import static java.lang.Math.*;
study/java/javachobo/appendix.txt · 마지막으로 수정됨: 2010/03/21 14:48 저자 gauryan