一、通配符
1.上限:
关键词:<?extend 上限类名> :表示此类及其子类
范例:List<?extend Number> = new ArrayList<Integer>()
2.下限:
关键词:<?super 上限类名> :表示此类及其父类
范例:List<?super Number> = new ArrayList<Object>()
二、可变参数
1.使用情景:
例如:想用一个方法,求两个数,三个数,多个数的和。
public int sum(a,b)
public int sum(a,b,c)
public int sum(a,b,c,d)
原来我们会用方法重载的方式去一个一个写这些参数,但是参数多了之后,我们还去一个一个写就过于麻烦。
2.解决(使用可变参数)方法:
修饰符 返回值 方法名(形参类型... 形参名)
形参名表示将参数封装成一个数组,我们可以通过增强for循环此数组,返回sum的值。
示例:
public int sun(int... a){
int sum=0;
for(int i : a){
sum+=i;
}
return sum;
}
3.注意事项:
如果可变参数方法中含有不可变参数,一定要加到可变参数之前。
正确示例:
public int sum(int b,int... a)
错误示例:
public int sum(int... a,int b)
想要更加熟练一点,可以看API文档中的Arrays的asList方法,List 中of方法和 Set 的of方法的使用。