JSR-334は、
JDK 7に実装されている小さなJava言語の改善に焦点を当てています
- 数値リテラルでは、数字のグループを下線で区切ることができます。
public final static int INT_WITH_UNDERSCORES = 100_000;
- 0bプレフィックスを持つバイナリリテラルが追加されました。
public final static int BINARY_INT = 0b001100;
- 文字列をスイッチキーとして使用できるようになりました。
switch ( "one" ) {
case "one" :
case "two" : System.out.println( "JSR 334" );
}
- これで、ジェネリッククラスのオブジェクトを作成するときに型定義を繰り返すことはできません。
List < String > foo = new ArrayList <>();
- catchブロックにいくつかの例外クラスをリストできます。
try {
throw new NullPointerException();
} catch (ArithmeticException | NullPointerException e) {
}
- UPD構文チェックの目的で、リストされている例外の最小の一般的なタイプが使用されます。
try {
throw new NullPointerException();
} catch (NullPointerException | ArithmeticException e) {
//
// ArithmeticException a = e;
//
RuntimeException r = e;
}
- tryブロックの実行後に自動的に閉じるリソースを追加しました。これにより、java.lang.AutoCloseableインターフェースが実装されます。
class Resource implements AutoCloseable {
@Override
public void close() throws Exception {}
}
- 自動的にリソースを閉じるtryコンストラクトは、catchを使用せずに、最後に次のようにできます。
try (Resource resource = new Resource()) {
throw new Exception();
}
- 変数型の可変数の引数を使用するメソッドおよびコンストラクターでは、SafeVarargsによって注釈が付けられていない場合、未チェックまたは安全でない操作の警告が発行されるようになりました。 コンストラクター、finalおよびstaticメソッドに注釈を付けることができます。
class Coin<T> {
@SafeVarargs
public Coin(T ... args){
}
@SafeVarargs
public final void instanceMethod(T ... args){
}
@SafeVarargs
public static void staticMethod(K ... args){
}
}