JAVA7 요약
참고: http://radar.oreilly.com/2011/09/java7-features.html
Diamond Operator
다음과 같이 양쪽에 모두 정의했어야 했는데:
Map<String, List<Trade» trades = new TreeMap<String, List<Trade» ();
이제 한쪽만 해주면 된다:
Map<String, List<Trade» trades = new TreeMap <> ();
<>
이걸 Diamond Operator라고 부른다.
switch..case 문에 string 지원.
String.equals() 메소드를 이용한다.
try{}
구문에서 자동으로 리소스 해제해줌
리소스(Connections, Files, Input/OutStreams, etc) 를 자동으로 close한다. try{}
구문이 끝나면 java.lang.AutoCloseable를 구현한 리소스가 해제된다.
상수에 _
사용가능
int thousand = 1_000;
int million = 1_000_000;
예뻐졌다.
exception handling하는 부분이 강화됨
handling 코드가 같은 경우에는 Interface를 구현하던가 아니면 각각 처리했어야 했는데. 단순해짐.
public void newMultiCatch() {
try {
methodThatThrowsThreeExceptions();
} catch (ExceptionOne | ExceptionTwo | ExceptionThree e) {
// log and deal with all Exceptions
}
}
New file system API (NIO 2.0)
Path, Paths, FileSystem, FileSystems 등등의 인터페이스가 생겨서 파일시스템을 다루기 좀 더 쉬워짐. 기존에 파일시스템을 다루는 문제는 그동안 그지같아서 직접 닦아줘야 했었는데 많은 부분이 강화됨. copy, move, createSymbolicLink같은 것들이 생겼음.
File change notifications - 그래서 파일시스템 이벤트를 핸들링할 수 있게됨.
Fork and Join
Multi core을 효율적으로 사용할 수 있도록 ForkJoinPool이라는 게 생겼음.
java.lang.invoke 패키지 추가
invokedynamic라고 부르고 다른 동적언어를 위해 추가됐다고 함.