JDK 1.5 변경 사항

Tags:

오토박싱이나 Enhanced forloop은 익숙한 것들이고, METADATA는 별 관심이 없고 (이거 예를 들면서는 항상 @REMOTE 이거 밖에 없군요.. -_- 사실 쓸 데가 있을라나??), typesafe enum은 디게 복잡하군요. 난 그냥 enum인가 싶었는데 그렇진 않군요.

살짝 내용을 가져온다면,

public enum Coin {
    penny(1), nickel(5), dime(10), quarter(25);
    Coin(int value) { this.value = value; }
    private final int value;
    public int value() { return value; }
}

이렇군요. -_-; 으아 싫다..

이름은 익숙한 static import는 상수를 implements 하는 프로그래머들의 습관을 고쳐주기 위한 것이라는데.. 가령

interface CONSTANTS {
   public static final int LEFT = 0;
   public static final int RIGHT = 1;
   public static final int UP = 2;
   public static final int DOWN =3;
}

public Program implements CONSTNATS {
   …
   
   public void foo() {
      
      if (… = LEFT)
      …
      
      

이런 코딩이 흔하죠..

이런경우 사실 Program은 CONSTANTS를 implements(여기서의 의미는 ‘구현하다’로 쓴것임) 하는 것이 아님에도 불구하고 상수를 끌어다 쓰기 위해, 클래스의 정체성을 훼손시키죠.. 그리고 이런 관용적 코딩이 상당히 흔하고..

그래서

interface CONSTANTS {
   public static final int LEFT = 0;
   public static final int RIGHT = 1;
   public static final int UP = 2;
   public static final int DOWN =3;
}

import static CONSTANTS;

public Program {
   …
   
   public void foo() {
      
      if (… = LEFT)
      …
      
      

이렇게 할 수 있게 한단 말이죠.

재밌는점은 메소드도 static import 할 수 있단 점인데 (이사람들이 갈수록 언어를 복잡하게 만드네요..)

import static Math;

System.out.println(cos(12));
뭐 이런게 되게 한다는 거죠.

Generics에서 한가지 서운한 점은

Vector<int> intVector; // error
Vector<Integer> intVector; // this is ok.

이렇다는군요. 어차피 오토박싱 되니까 클래스로 넣어라 그런거 같은데, 그럼에도 불구하고 왠지 그정도 아량도 없나 싶어서 좀 그렇군요.

아쉽게도 C++처럼의 메타 프로그래밍으로서의 template 은 아니라는군요. (이게 무슨말인지 몰라도 아마 앞서의 클래스별 static 과 같은 것은 불가능한 그런거란 말이겠죠? 전에 피보나치를 컴파일 시간에 계산하는 예를 봤었는데 그게 아마 메타 프로그래밍이라고 했던 듯.)

아래에 링크중에 혹시 로그인하라고 하거들랑 http://developer.java.sun.com 가서 계정 만들고 로그인해서 들어가서 보세요.. SUNONE의 로그인은 너무 느리니까..

Forthcoming JavaTM Programming Language Features TS-3072
Adding Generics to the JavaTM Programming Language TS-3063
Generics in the Java Programming Language

그외에도 java.util.Scanner이라는 쓸만한 읽기도구가 등장하네요.

java.util.concurrent!!! 정말 기다리고 기다린 녀석이었지만 이걸 공부해야한다는건 차라리 악몽이라고 하고 싶군요 -_-;