十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你括号里的int arr,就是给你的add方法定一个规则,你要用add这个方法,必须满足他的条件,
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了中山免费建站欢迎大家使用!
public static int add(int x , int y)
比如说这个好了,你要调用它,必须给他2个int的参数,add(2,3),public static int add(int x , String y)换成String,就变成add(2,"3"),或者String a=3;add(2,a);必须跟add方法的参数类型个数对应,你这里好几个add,你传入2个int就会调用public static int add(int x , int y)
,传入3个就会调用public static int add(int x , int y, int z)
,就是这个道理,这叫做方法重载,同个方法名,多种表现方式
首先,可变长度参数列表就是一个数组。
观察Method
类的方法Object invoke(Object obj, Object... args);
可以发现 参数obj是要执行的对象,args是方法的参数。
method.invoke(example, parameters)的意思是执行对象example的指定方法,这个方法接收参数为数组parameters中的元素。
方法myMethod只有一个参数:字符串数组。如果method.invoke(example, new String[] { "卧槽,", "牛逼! ", "你麻痹真强" }),系统会以为你要执行myMethod(String str1,String str2,String str3)。但是Example类没有这个方法,所以会报错。如果invoke(example, new Object[] {new String[] {"卧槽,","牛逼! ","你真强"}}),就是告诉系统,你要找的是myMethod(String[] strs),由于可变参数等价于数组,于是找到了了Example类中的myMethod(String... strings)。
这个是JDK5.0以上的版本新加的功能。 那个for循环也是新加的功能。
那个可变参数的就是个数组,你传多少个参数都被放到那个数组里面。
这样方便了程序员,因为如果不确定要传的参数的个数的话,我们要写带1个参数的,带2个参数,带3个参数的,这样很麻烦。 该进后的这个方法,我们只要写一个函数就好,可以传任意个参数。
你好,很高兴回答你的问题。
这就是java可变参数的传参方式,可以直接传一个符合参数数据类型的数组,也可以是用逗号分割的多个符合参数数据类型变量。
如果有帮助到你,请点击采纳。
java反射调用可变参数的方法的方式是传入objects参数,如下代码:
public class Reflect {
public static void main(String[] args) throws Exception {
Class? clazz = Single.class;
Single single = (Single) clazz.newInstance();
ListString list = new ArrayListString(){
private static final long serialVersionUID = 1L;
{
add("fuck");
add("ni");
add("mei");
}
};
//获取method两种方式, 在method中 数组的的空间大小是可以随便写的不一定使用0
/* 1 */
Method method = clazz.getDeclaredMethod("method", Array.newInstance(Object.class, 0).getClass());
/* 2 */
method = clazz.getDeclaredMethod("method", (new Object[0]).getClass());
//初始化参数
/* 1 */
Object objs = Array.newInstance(Object.class, 2);
Array.set(objs, 0, list);
Array.set(objs, 1, "23");
method.invoke(single, objs);
/* 2 */
Object[] objects = {1, "fuck", list};
method.invoke(single, new Object[]{ objects });
}
}
class Single {
public void method(Object... objs) {
System.out.println(Arrays.deepToString(objs));
}
}
结果:
[[fuck, ni, mei], 23]
[1, fuck, [fuck, ni, mei]]
Java中方法内的包含可变参数的方法
创建一个工程,或者在已有工程中,创建一个包,写一个类,我命名为Parameters,大家随便。
核心就是这个方法, 把参数is理解成一个数组就是了:
private static void function(int... is) {
for (int i = 0; i is.length; i++) {
System.out.print(is[i]+" ");
}
}
为了使这个方法更复杂一点点呢,我们可以填一点儿小功能。
比如,我想得到累加值,嘿嘿,很简单的。
方法之初申明一个int类型变量,赋初值为零。for中与数组中每一个值进行累加。如图
好了,写一个很简单的方法测试一下。
main()里面写
function(new int[] { 1, 2, 3, 9, 7,});
最后,运行一下结果,很简单的吧?