Java 7での変更


以前のバージョンのjavaをずっと使用していた場合、機能を追加するたびにその有用性と利便性を体験していましたが、これまで開発中に使用されていたバージョンの大部分は6か7なので、このようなことはなかったようです.
この意味でjava 7で新しく追加または変更された内容について議論します.
JAva 7での変更
補足数値表示方法
  • 以前のバージョンでは、0を前にすると8進法と認識され、0 xを前にすると16進法と認識された.Java 7からは、接頭辞のない数字が10進数で、0 bを前に置くとバイナリ数字と認識できます.
  • を使って数字の単位を切り捨てて表すことができます.読みやすさがよくなりました.
  • switch文でStringを使用する
  • java 6まではswitch-caseでは整数型しか使用できません.7からStringも使えます.
  • Diamonが使いやすい
  • 以前にJENERICを使用する場合は、<>にタイプを入力する必要があります.7からそうする必要はありません.変数宣言部がタイプを指定しているからです.
  • 例外は補われた.(1)
    以前は例外処理のためにtry-catch文を用いた.この部分ではcatchで捉えたコードの可読性が低下した.
        public void scanFile(String fileName, String encoding){
        	Scanner scanner = null;
        	try{
        	    scanner = new Scanner(new File(fileName), encoding);
        	    System.out.println(scanner.nextLine());
        	}catch(IllegalAccessException iae){
        	    iae.printStackTrace();
        	}catch(FileNotFoundException ffe){
        	    ffe.printStackTrace();
        	}catch(NullPointerException npe){
        	    npe.printStackTrace();
        	}catch(Exception e){
        	    e.printStackTrace();
        	}finally{
        	    if(scanner != null){
        		scanner.close();
                }
        	}
        }
    上記の例では、ファイル名が韓国語の場合、タイプ名を付ける必要があります.エンコーディングタイプが存在しない場合はIllegalArgumentExceptionが発生し、ファイルが存在しない場合はFileNotFoundExceptionが発生します.ファイル名またはエンコーディングタイプがNullPointerExceptionの場合があります.
    これまでは、通常、起こり得る状況に応じてcatchブロックを作成して処理し、最後にExceptionクラスcatchを使用していた.
    ただし、java 7から次の処理を開始できます.
        public void newScanFile(String fileName, String encoding){
        	Scanner scanner = null;
        	try{
        	    scanner = new Scanner(new File(fileName), encoding);
        	    System.out.println(scanner.nextLine());
        	}catch(IllegalArgumentException | FileNotFoundException | NullPointerException exception){
        	    exception.printStackTrace();
        	}finally{
        	    if(scanner != null){
        		scanner.close();
                }
        	}	
        }
    例外は補われた.(2)
    try-with-resource(リソースとともに処理されるtry文).
    次の例です.
    
      public void newScanFileTryWithResource(String fileName, String encoding){
          try(Scanner scanner = new Scanner(new File(fileName), encoding)){
              System.out.println(scanner.nextLine());
          }catch(IllegalArgumentException | FileNotFoundException | NullPointerException exception){
          exception.printStackTrace();
          }	
      }
    この言葉の特徴は以下の通りです.
  • tryの括弧内で、異常が発生する可能性のあるオブジェクトがclose()を使用して閉じる必要がある場合、自動解凍性を実現するオブジェクトはfinally文で単独で処理する必要がないことがわかります.(以下、AutoCloseableについて引き続き説明します.)
  • AutoCloseable
    JAva 5が追加を開始したjava.io.Closeableインタフェースを実装するクラスは、close()メソッドを使用して明示的に閉じる必要があります.
    Java 7に追加されたAutoCloseableインタフェースを継承するクラスは、前述したtry-with-resource構文を使用します.
    AutoCloseableを継承するクラスは次のとおりです.△ほかにもたくさんあります.
  • java.nio.channels.FileLock
  • java.beans.XMLEncoder
  • java.beans.XMLDecoder
  • java.io.ObjectInput
  • java.io.ObjectOutput
  • java.util.Scanner
  • java.sql.Connection
  • java.sql.ResultSet
  • java.sql.Statement
  • 出典:ジャワの神(李尚敏著)