Rumah > Java > javaTutorial > teks badan

Mengapa saya perlu menggunakan @SafeVarargs dalam Java 9?

王林
Lepaskan: 2023-09-11 23:53:02
ke hadapan
624 orang telah melayarinya

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

Ciri varargs telah diperkenalkan di Java untuk memudahkan penciptaan kaedah dengan bilangan parameter yang berubah-ubah tanpa menggunakan parameter jenis tatasusunan atau versi terlebih muatan kaedah yang sama.

Sebelum versi Java 9, terdapat mesej amaran jika kaedah vararg digunakan dengan generik. Walaupun tidak semua kaedah menghasilkan pencemaran timbunan, pengkompil memaparkan amaran untuk semua kaedah variadik yang digunakan dengan generik. Itulah sebabnya konsep @SafeVarargs telah ditambahkan dalam versi Java 9 untuk mengelakkan amaran ini. Jika kami menambah anotasi ini, pengkompil akan menghentikan amaran ini.

Kita boleh menyusun kod menggunakan arahan berikut

<strong>javac -Xlint:unchecked SafeVarargsTest1.java</strong>
Salin selepas log masuk

Dalam contoh di bawah, pengkompil memaparkan mesej amaran kepada pengguna.

Contoh

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);
   }
}
Salin selepas log masuk

Output

<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>
Salin selepas log masuk

Dalam contoh di bawah, kami menggunakan @SafeVarargs sebelum kaedah peribadi. Oleh itu, ia tidak memaparkan sebarang mesej amaran.

Contoh

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);
   }
}
Salin selepas log masuk

Output

<strong>[Adithya, Jaidev]
[Raja, Chaitanya]</strong>
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa saya perlu menggunakan @SafeVarargs dalam Java 9?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan