Java7의 새로운 기능은 스위치 코드 블록에 String에 대한 지원을 추가하는 것입니다. 비록 String만 추가했지만 Integer만 지원했던 이전 버전보다 훨씬 좋습니다. 문자열뿐만 아니라 모든 개체를 스위치 블록에서 사용할 수 있습니다(수정: C# 2.0 스위치는 bool, char, 정수, 열거형, 문자열 및 해당 null 허용 값 유형만 사용할 수 있습니다. 스위치 식 또는 사례 레이블은 bool, char, 문자열, 정수, 열거형 또는 해당 nullable 유형).
;try-with-resource 문
;Java7의 이 새로운 기능은 C# 2.0 프로그래머에게 매우 친숙합니다. 적시에 해제되어야 하는 일부 리소스를 코딩할 때 일반적인 접근 방식은 close( ) 메서드를 호출하여 해제하는 것입니다. C#은 동일한 기능을 수행하는 간단한 방법을 제공하며 코드는 다음과 같습니다.
; 다음은 코드 조각입니다.
; using (SqlConnection conn = new SqlConnection (“ConnectionStringHere)) {
;// Do Something
;}
;위 코드는 다음과 같습니다.
;다음은 코드 조각입니다.
;SqlConnection conn = new SqlConnection("ConnectionStringHere);
;try{
;conn.open();
;// Do somethind
; } finally{
;conn.close();
;}
;그리고 Java7도 비슷한 기능을 구현했는데, using을 사용하는 대신 try를 사용합니다. 코드는 다음과 같습니다.
;다음은 코드 조각입니다.
; try (BufferedReader br = new BufferedReader (new FileReader (path))) {
;return br.readLine();
;}
C#의 경우 using을 사용하려면 조건을 충족해야 합니다. 즉, using에서 선언한 개체가 인터페이스를 구현합니다. System.IDisposable은 이러한 방식으로 finally 블록의 코드가 이 인터페이스에서 Dispose()
메서드를 자동으로 호출하여 리소스 해제 목적을 달성할 수 있습니다. Java7에도 동일한 요구사항이 있습니다. 즉, 객체는 java.lang.AutoCloseable 또는 java.io.Closeable 인터페이스를 구현해야 합니다.
;For-Each 루프
Java7은 마침내 for-each 루프 기능을 구현합니다. 비록 Java5의 구문 향상이지만 Java6에는 구문 업데이트가 없기 때문에 이 향상을 Java7의 새로운 기능으로 나열하겠습니다. 그런데 C#처럼 foreach 키워드를 직접 도입하지 않고 왜 아직도 for 키워드를 사용하는지 모르겠습니다. for-each 코드의 Java 버전은 다음과 같습니다.
;다음은 코드 조각입니다.
;void cancelAll(Collection c) {
;for (TimerTask t: c)
;t.cancel();
;}
;C# 버전의 경우 코드는 다음과 같습니다.
;코드 조각은 다음과 같습니다.
;void CancelAll(Collection c) {
;foreach (TimerTask t in c)
;t.Cancel();
;}
두 구현 모두 큰 차이가 없고 간결하고 명확하지만 적용 범위가 다르다는 것을 알 수 있습니다. Java7은 컬렉션(기존 배열 및 일반 컬렉션 포함)에서만 구현되는 것으로 보이지만 C#에서는 가능합니다. System.IEnumerable 또는 해당 제네릭의 구현에 사용됩니다. 유형 버전 System.IEnumerable 개체입니다.
위 내용은 Java7의 새로운 기능 분석 예시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!