首頁 > Java > java教程 > 為什麼在Java 9中需要使用@SafeVarargs?

為什麼在Java 9中需要使用@SafeVarargs?

王林
發布: 2023-09-11 23:53:02
轉載
661 人瀏覽過

为什么在Java 9中需要使用@SafeVarargs?

Java 中引入了varargs 功能,以便於建立具有可變數量參數的方法,而無需借助數組類型參數或同一方法的重載版本。

在 Java 9 版本之前,如果 vararg 方法泛型一起使用,則有警告訊息。儘管並非所有方法都會產生堆污染,但編譯器會針對與泛型一起使用的所有可變參數方法顯示警告。這就是 Java 9 版本中加入 @SafeVarargs 概念以避免這些警告的原因。如果我們加入了這個註釋,那麼編譯器就會停止這些警告。

我們可以使用下面的命令來編譯程式碼

<strong>javac -Xlint:unchecked SafeVarargsTest1.java</strong>
登入後複製

在下面的範例中,編譯器向使用者顯示一條警告訊息。

範例

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

public class SafeVarargsTest1 {
   public static void main(String args[]) {
      SafeVarargsTest1 test = new SafeVarargsTest1();
      test.<strong>varargsMethod</strong>(<strong>Arrays.asList</strong>("Adithya", "Jaidev"), Arrays.asList("Raja", "Chaitanya"));
   }
   private void varargsMethod(<strong>List<String></strong>... list) {
      for(List list1: list)
         System.out.println(list1);
   }
}
登入後複製

輸出

<strong>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</strong>

<strong>[Adithya, Jaidev]
[Raja, Chaitanya]</strong>
登入後複製

#在下面的範例中,我們應用了@ SafeVarargs私有方法之前。因此,它不會顯示任何警告訊息。

範例

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

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

輸出

<strong>[Adithya, Jaidev]
[Raja, Chaitanya]</strong>
登入後複製

以上是為什麼在Java 9中需要使用@SafeVarargs?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板