Java2005. 3. 22. 10:31

Formatted Output

이제 C 같은 포멧 출력을 지원하게 되었습니다.
C printf 대부분의 기능이 가능하고 자바의 일부 클래스인 Date BigInteger 같은 클래스 또한 포멧 출력이 가능합니다.
System.out.printf("name count\n"); System.out.printf("%s %5d\n", user,total);


Jini Say

로그로 남기든 안 남기든 서버 어플리케이션에서 콘솔 출력은 많이 사용됩니다. 일부 개발자분들은 포멧 출력 클래스를 구현하거나 아니면 그냥 출력하셨을 텐데 좀더 편해 졌습니다.

Posted by la30321
Java2005. 3. 22. 10:31

Formatted Input

표준 인풋 스트림에서 포멧 입력을 받는 기능이 추가 되었습니다.
Scanner 클래스의 next 메소드를 이용해서 데이터를 가져올 있습니다. 복잡한 형태의 입력은 Formatter 클래스를 통해서 가능합니다.
Scanner s=Scanner.create(System.in); String param= s.next(); int value=s.nextInt(); s.close();


Jini Say

Formatted Output기능 추가에 따른 당연한 추가일까요? 자바 표준 입력은 해본적이 없습니다. 얼마나 유용한지는 판단 할 수 없네요.

Posted by la30321
Java2005. 3. 22. 10:29

Static Import

Static Import 기능은 클래스안에 있는 정적 상수를 상속 없이 사용이 가능하게 해줍니다. 아래의 예를 보면 1.5 이전에는 BorderLayout.CENTER 사용해야 하지만 이제는 CENTER 적어주면 자동으로 참조 합니다.
import static java.awt.BorderLayout.*;getContentPane().add(new JPanel(), CENTER);


Jini Say
필자가 생각하는 별 필요 없는 1.5의 기능 중에 하나라고 생각한다. 이 기능을 에디터에서 지원하기 위해서 쓸 때 없는 오버해드만 발생할 것이다.


2004-04-08 15:46:10.0 (highfive 203.224.101.26) D

그리 큰 필요성이 있었던건 아니지만 나름대로 코딩시 편한점은 있다고도 봅니다.
저같은 경우는 상수를 쓰기 위해 extends, implements 할 생각은 못했었기 때문에 어차피 static이라는 점을 이용해서 class 이름.상수명 의 식으로 사용을 해 왔는데 해당 상수를 많이 사용하고 그 클래스 이름이 좀 길거나 할때는 치기도 귀찮을뿐더러 가독성이 좀 떨어졌거든요...

2004-04-09 20:40:57.0 (jini 219.248.234.145) D

Class A{
static final int CENTER=1;
}

Class B{
static final int CENTER=2;
}

import static A.*;
import static B.*;

if(CENTER==2)System.out.println("CENTER is 2");

모호성이 발생하네요. 물론, 에러로 처리되겠지만.. 또한 IDE의 에디터에서 CENTER의미를 static import 클래스 전체에서 찾아야 하는 막대한 오버헤드가 생깁니다.

Posted by la30321
Java2005. 3. 22. 10:28

Enumerated types

Enumerated type 상수와 비교할 사용합니다. 이전 어플리케이션 작성 때에 enum이라는 구분자를 사용해 봤다면, javac ?source 1.5 옵션이 필요합니다.
public enum StopLight { red, amber, green };


Jini Say

enum이 없던 시절 저는 아래와 같이 사용했습니다. 우리가 값을 바꿀수 없는 상수를 사용하는 것은 리터럴을 통해서 코드 작성력을 높이기 위해서 입니다. 앞으로 상당히 코딩양도 줄고 코딩 패턴도 달라질것으로 봅니다.


Class JlabConstant{

static final int VIEW=0;

static final int EDITOR=1;

}

Posted by la30321
Java2005. 3. 22. 10:22

Enhanced for loop

Interator 클래스는 Collection API에서 많이 쓰입니다. Iterator 클래스는 순열적인 컬랙션 데이터에서의 검색을 제공합니다. 새로운 진보된 루프 기능은 루프에 필요한 코드를 생성해주고 제너릭 타입에 대한 추가적인 케스팅이 필요 없게 해줍니다.
Before
ArrayList list = new ArrayList(); for (Iterator i = list.iterator(); i.hasNext();) { Integer value=(Integer)i.next(); }




After

ArrayList list = new ArrayList(); for (Integer i : list) { ... }



1.5에서는 로직에 대해서 쉬운 표현이 추가 되었습니다. 하지만 이러한 새로운 기능들이 이전의 형태와 공존하거나 개인적 취향에 따라 특정 방법만 선호되어 혼란을 줄것으로 예상합니다.

Posted by la30321