日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java safevarargs_@SafeVarargs注解的使用

發布時間:2025/4/16 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java safevarargs_@SafeVarargs注解的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在聲明具有模糊類型(比如:泛型)的可變參數的構造函數或方法時,Java編譯器會報unchecked警告。鑒于這些情況,如果程序員斷定聲明的構造函數和方法的主體不會對其varargs參數執行潛在的不安全的操作,可使用@SafeVarargs進行標記,這樣的話,Java編譯器就不會報unchecked警告。

先看看@SafeVarargs在Java?SE中的聲明:

packagejava.lang;import java.lang.annotation.*;

@Documented

@Retention(RetentionPolicy.RUNTIME)

@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})public @interface SafeVarargs {}

由Java源代碼聲明我們了解到:@SafeVarargs注解,只能用于標記構造函數和方法,由于保留策略聲明為RUNTIME,所以此注解可以在運行時生效。

使用的時候要注意:@SafeVarargs注解,對于非static或非final聲明的方法,不適用,會編譯不通過。

@SafeVarargs使用示例如下:

packageorg.springmorning.demo.javabase.annotation.pre;/***@author春晨

* @date 2019/1/19 9:26

* Copyright ?2019 春晨https://www.cnblogs.com/springmorning/p/10285780.html

*/

public class SafeVarargsAnnotation{privateS[] args;//構造函數可以使用@SafeVarargs標記

@SafeVarargspublicSafeVarargsAnnotation(S... args){this.args =args;

}//此處不能使用@SafeVarargs,因為此方法未聲明為static或final方法,如果要抑制unchecked警告,可以使用@SuppressWarnings注解

@SuppressWarnings("unchecked")//@SafeVarargs

public voidloopPrintArgs(S... args){for(S arg : args) {

System.out.println(arg);

}

}//final方法可以使用@SafeVarargs標記

@SafeVarargspublic final voidprintSelfArgs(S... args){for (S arg : this.args) {

System.out.println(arg);

}

}public static voidmain(String[] args) {

SafeVarargsAnnotation.loopPrintInfo("A", "B", "C");

}//static方法可以使用@SafeVarargs標記

@SafeVarargspublic static voidloopPrintInfo(T ... infos){for(T info : infos) {

System.out.println(info);

}

}

}

如果以上把@SafeVarargs標記注釋掉,在編譯時就會報unchecked警告:

加上@SafeVarargs注解,警告被抑制:

下節繼續

總結

以上是生活随笔為你收集整理的java safevarargs_@SafeVarargs注解的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。