1,泛型的本质是参数化,只有在具体使用时传入具体的类型。好处1:将问题提前;好处2:避免强制类型转换;
2,泛型类,省事儿,或者等等,想什么类型就什么类型。
3,泛型方法,
public <T> void show(T t){
System.out.println(t);
}
或者
public class GC <T>{
public void show(T t){
System.out.println(t);
}
}
4,泛型接口,道理是一样的,实现类将其方法重写,也可以实现,如:
public interface IFanxingA <T> {
void show(T t);
}
public class IFanxingAimpl <T> implements IFanxingA <T> {
@Override
public void show(T t) {
System.out.println(t);
}
}
5,类型通配符,上界的关键字用<extents 什么类>;下界的关键字用<super 什么类>。
6,可变参数的方法,关键字(int … a),原理是将传入的参数封装到一个数组里面。并且注意,当要传入多种不同个用途的数据时,将可变参数放在最后面。
public static void main(String[] args) {
show(5,6,6,7);
}
public static void show(int b,int...c){
System.out.println(b+", "+c);
}
结果为,显示的c为数组的地址。
5, [I@1b6d3586
一些List、Set也有一些可变参数的方法,如javajdk8的
List<String> list1 = Arrays.asList("hello","javase","javaee","javaweb");
或者jdk9里的List.of()【静态方法】。