Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9で@SafeVarargsが必要なのはなぜですか?


varargs 配列型に頼ることなく、可変数の引数を持つメソッドの作成を容易にする機能がJavaに導入されました。 同じメソッドのパラメータまたはオーバーロードされたバージョン。

Java 9バージョンより前、varargメソッドの場合 ジェネリックで使用されます 、次に警告メッセージがあります 。すべての方法でヒープ汚染が発生するわけではありませんが 、コンパイラは警告を表示します ジェネリックスで使用されるすべてのvarargメソッド。それが@SafeVarargsの理由です これらの警告を回避するために、Java9バージョンに概念が追加されました。このアノテーションを追加すると、コンパイラはこれらの警告を停止します。

以下のコマンドを使用してコードをコンパイルできます

javac -Xlint:unchecked SafeVarargsTest1.java

以下の例では、コンパイラはユーザーに警告メッセージを表示します。

import java.util.Arrays;
import java.util.List;

public class SafeVarargsTest1 {
   public static void main(String args[]) {
      SafeVarargsTest1 test = new SafeVarargsTest1();
      test.varargsMethod(Arrays.asList("Adithya", "Jaidev"), Arrays.asList("Raja", "Chaitanya"));
   }
   private void varargsMethod(List<String>... list) {
      for(List list1: list)
         System.out.println(list1);
   }
}
出力
SafeVarargsTest.java:7: warning: [unchecked] unchecked generic array creation for varargs parameter of type List[]
test.varargsMethod(Arrays.asList("Adithya", "Jaidev"), Arrays.asList("Raja", "Chaitanya"));
^
SafeVarargsTest.java:9: warning: [unchecked] Possible heap pollution from parameterized vararg type List
private void varargsMethod(List... list) {
^
2 warnings

[Adithya, Jaidev]
[Raja, Chaitanya]


以下の例では、 @SafeVarargsを適用しています。 プライベートメソッドの前 。そのため、警告メッセージは表示されません。

import java.util.Arrays;
import java.util.List;

public class SafeVarargsTest2 {
   public static void main(String args[]) {
      SafeVarargsTest2 test = new SafeVarargsTest2();
      test.varargsMethod(Arrays.asList("Adithya", "Jaidev"), Arrays.asList("Raja", "Chaitanya"));
   }
   @SafeVarargs
   private void varargsMethod(List<String>... list) {
      for(List list1: list)
         System.out.println(list1);
   }
}
出力
[Adithya, Jaidev]
[Raja, Chaitanya]

  1. Javaループスルーリスト

    このチュートリアルでは、JavaでArrayListを反復処理できる5つの異なる方法を見ていきます。 Java 8以降では、forEachメソッドとイテレータクラスを使用してArrayListをループできます。 ArrayListをループする ArrayListをループする方法は主に5つあります クラシックForループ Advanced For Loop イテレータ ループ中 ForEach(Java 8) まず、ループの例で使用するArrayListを作成しましょう: import java.util.ArrayList; import java.util.List; pub

  2. Javaでリストを配列に変換する

    リストと配列の間の変換は、Javaでは非常に一般的な操作です。 Javaでリストを配列に変換する最も簡単な方法は、.toArray()を使用することです。 メソッド。 同様に、Arrays.asList()を使用して、リストを配列に戻すことができます。 メソッド。 以下の例は、文字列のリストと整数のリストを同等の配列に変換する方法を示しています。 リストを文字列の配列に変換 import java.util.ArrayList; import java.util.List; public class ConvertArrayListToArray { public static