Java 9 - @safevarargs注释
时间:2020-02-23 14:34:55 来源:igfitidea点击:
在本教程中,我们将看到Java 9中的@safevarargs注释 @SafeVarargs
是用于执行安全操作的注释。
当方法需要变量参数时,那么它可能会导致不安全操作,因此 @SafeVarargs
注释告诉编译器执行安全操作。
例如,如果我们不使用注释编译器报告警告: Type safety: Potential heap pollution via varargs parameter
。
我们可以使用此注释 final
和 static
和 private
(来自Java 9)仅包含类的方法。
请参阅下面的示例。
@safevarargs注释
让我们看看有最终和静态方法的少数例子。
@safevarargs最终方法
在此示例中,我们具有var-args参数的最终方法,因此我们使用@safevarargs注释。
看到这个例子。
import java.util.ArrayList; import java.util.List; class DemoPrint{ @SafeVarargs final void display(List<String>... lists) { for (List<String> list : lists) { System.out.println(list); } } } class Main { public static void main(String[] args){ DemoPrint dp = new DemoPrint(); List<String> list = new ArrayList<String>(); list.add("Python"); list.add("Java"); dp.display(list); } }
输出
[Python, Java]
@safevarargs具有静态方法
Java允许使用 @SafeVarargs
用静态方法注释。
请参阅下面的示例。
import java.util.ArrayList; import java.util.List; class DemoPrint{ @SafeVarargs static void display(List<String>... lists) { for (List<String> list : lists) { System.out.println(list); } } } class Main { public static void main(String[] args){ List<String> list = new ArrayList<String>(); list.add("Python"); list.add("Java"); DemoPrint.display(list); } }
输出
[Python, Java]
Java 9 @safevarargs改进
在Java 9中,它也可以使用@safevarargs注释以及私有方法。
其中我们有私有方法 displayString()
带有字符串型var-args。
import java.util.ArrayList; import java.util.List; class DemoPrint{ @SafeVarargs static void display(List<String>... lists) { for (List<String> list : lists) { System.out.println(list); } } } class Main { @SafeVarargs private void displayString(String...strings ) { for (String str : strings) { System.out.println(str); } } public static void main(String[] args){ List<String> list = new ArrayList<String>(); list.add("Python"); list.add("Java"); DemoPrint.display(list); Main main = new Main(); main.displayString("Java","is","a","Awesome","Language"); } }
输出
[Python, Java] Java is a Awesome Language
请注意,如果我们使用 @SafeVarargs
在Java 9之前的私有方法,我们将获得编译错误。
没有@safevarargs注释
如果,我们不使用注释编译将向输出报告给控制台的警告消息。
class Main { private void displayString(String...strings ) { for (String str : strings) { System.out.println(str); } } public static void main(String[] args){ Main main = new Main(); main.displayString("Java","is","a","Awesome","Language"); } }
输出
Note: Main.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. Java is a Awesome Language