> Java > java지도 시간 > Java 9에서 @SafeVarargs를 사용해야 하는 이유는 무엇입니까?

Java 9에서 @SafeVarargs를 사용해야 하는 이유는 무엇입니까?

王林
풀어 주다: 2023-09-11 23:53:02
앞으로
675명이 탐색했습니다.

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

varargs 기능은 배열 유형 매개변수나 동일한 메소드의 오버로드된 버전을 사용하지 않고 가변 개수의 매개변수가 있는 메소드 생성을 용이하게 하기 위해 Java에 도입되었습니다.

Java 9 버전 이전에는 vararg 메서드generics와 함께 사용한 경우 경고 메시지가 있었습니다. 모든 메서드가 힙 오염을 생성하는 것은 아니지만 컴파일러는 제네릭과 함께 사용되는 모든 가변 메서드에 대해 경고를 표시합니다. 이것이 바로 이러한 경고를 피하기 위해 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>
로그인 후 복사

아래 예에서는 private method 앞에 @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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿