varargs 方法的非 varargs 调用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了varargs 方法的非 varargs 调用相关的知识,希望对你有一定的参考价值。
参考技术A 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;[javac] 对于 varargs 调用,应使用 java.lang.Object
[javac] 对于非 varargs 调用,应使用 java.lang.Object[],这样也可以抑制此警告
Java 变长參数Varargs
Varargs (variable arguments)可变长參数是Java 1.5引入的特性。
方法的形參如print(String ... s),实參为随意数目的值。
public class VarargsDemo{ public static void print(String ... s){ for(String a: s) System.out.print(a); } public static void main(String[] args) { print("a", "\n"); print("a", "b", "\n"); print("a", "b","c\n"); } }输出:
a
ab
abc
工作原理:
1.以调用方传递的參数的数目为长度创建一个数组;
2.将实參的值放入数组中,
3.将数组(的引用)传递给被调方法。
样例:
String.format(String format, Object... args)
反射机制中。
【7.3.2中非常多API用到了变长參数。不记得《编程导论》中讲了变长參数没有,补充一下先】
注意:
- 变长參数要作为方法的最后的形參;
- 避免重载编译错误。
以上是关于varargs 方法的非 varargs 调用的主要内容,如果未能解决你的问题,请参考以下文章
为什么从另一个泛型方法调用的泛型varargs方法返回Object []? [重复]
Kotlin vararg:如何将 null 设置为不抛出 NullPointerException 的 vararg?