赞
踩
我们在实际的开发中,通常会遇到参数不确定多少个 不确定什么类型方法,那么在这种情况在我们该如何定义参数列表呢?
Object[ ] 等一会我们对比 可变长参数的区别
场景:::当一个方法的参数个数不确定的时候,要使用可变参数
Sun JDK1.5新增语法,新特性,动态参数或者是可变参数的意思。
可变长参数定义:
可变长参数是一种参数集合,在集合中参数的数量的不确定的,可能为一个或者多个,
也可能没有参数;在这个参数集合中的每个参数类型是不确定的,我们将这个参数集合称之为可变的长参数集合。(有序按照存放的顺序)
格式:
(数据类型...变量名)
于Object是所有类型的父类,可以包含所有的类型
由于参数的类型不是固定的,那么我们就用Object类型来接收参数,Object参数是所有类型的父类,定义方法为:
数据类型...变量名
Object...obj 可变长参数
也有其他类型 例如我们不确定多少个string类型的参数 String...str
private static void function(Object...obj);
针对于我定义的来讲 对于可变参数的定义方法而言,它表示在方法名为function中有不确定数量的、类型为Object的多个或0个参数的方法,
obj表示为参数集合的名字,类似于数组的用法。
定义中利用“...”来表示不确定数量和类型的参数集合。
为了方便理解,我们写一个函数体,其具体功能为:判断方法中是否有参数,如果没有打印输出提示信息,可以识别参数的个数以及类型,并且把他们打印输出
看看里面存的到底是什么 ,什么类型 打开Paramss.java演示
关于getClass()方法解析:
面对参数类型和参数个数未知的函数并非束手无策,首先对与参数的类型的不确定我们可以设置参数集合的类型为Object类型来解决问题,
由于Object是所有类型的父类,可以包含所有的类型,至于原来参数的类型可以在参数遍历中使用方法obj[i].getClass().getSimpleName();
来获得参数的原本类型。
getClass()方法属于Object的一部分,他将打印输出对象所在的类。
看看里面存的到底是什么 打开Overload.java演示
语法注意事项
*关于可变参数的定义的注意事项如下:
1.1.在调用时可变参数的方法和固定参数的方法如果同时匹配,那么固定参数的方法优先,调用固定参数的方法而不调用可变参数的方法
1.22.两个相同类型的不定参数方法隶属于同一方法。
1.33.可变参数可以和固定参数搭配使用,但是可变参数一定要是所有参数中的最后一个参数。
Object[ ]和可变长参数的区别 打开Objectss.java演示
1 params 可以为空调用 Object不能为空调用
2 方法重载,当使用调用时,优先调用后者(相同)。
3..test(String...str)能不能与test(String[] array)重载 ? NO
4.Object[ ] 可以定义多个搭配使用 可变长参数只可以一个
5. Object[]可以和可变长参数在一起
语法总结:
格式:
? 修饰符? 返回值类型? 方法名(数据类型...变量名){...}
例如
print(String... args){
...
}
注意事项总结
JDK1.5新增语法,新特性,动态参数或者是可变参数的意思。
(1)使用…将参数声明成可变长参数。
(2)可变长参数必须是最后一个参数。
(3)可变参数同时可以跟固定的参数混合使用,但是一个方法的参数中不能同时拥有2种类型的可变参数。两个相同类型的不定参数方法隶属于同一方法(不是重载)
(4)在调用时可变参数的方法和固定参数的方法如果同时匹配,那么固定参数的方法优先,调用固定参数的方法而不调用可变参数的方法
(5)可变参数可以和固定参数搭配使用,但是可变参数一定要是所有参数中的最后一个参数。
public class EmplyoyeeTest {
private Scanner sc;
@Test
public void EmployeeSystemTest(){
sc = new Scanner(System.in);
Select:while(true){
System.out.println("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆WELCOM TO EmployeeManagere☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");
Menu.getlistSelect().forEach(System.out::println);
System.out.println("请输入您的选项");
String selectMenu = sc.next();
switch(selectMenu){
case "1": ListEmployee.ListEmployees(); break;//登录/注册员工系统
case "2": ListManage.ListManager(); break;//登录/注册部门管理员系统
case "3": break Select;//退出登录
default: System.out.println("您输入的信息有误,请重新输入"); break;
}
}
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。