1.什么是java泛型?
这是百度百科的解释
Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
也许对于初学者来说 比较难懂
举个例子
现在有一个车库 并且规定了 这个车库里只允许停具有四个轮子的车。
车库就是一个集合,<四轮车就>是为这个集合指定的泛型。
如果往这个车库里放自行车,三轮车不符合规定的车,那么就会报错。
ArrayList<四轮车> list=new ArrayList();
在此之前 没有 “四轮车”这个参数。车库是没有限制的
就相当于
ArrayList list=new ArrayList();
在没有指定泛型的时候,默认就是Object。
2.泛型的作用
第一是泛化。
第二是类型安全。提高Java程序的类型安全,如果不用泛型则必须使用强制类型转换,而强制类型转换不安全,在运行期可能发生ClassCast Exception异常,如果使用泛型,则会在编译期就能发现该错误。
3.泛型使用
a 泛型类 public class Person{}
b 泛型接口 public interface Person{}
c 泛型方法
举个例子
public class fanxing {
public static void main(String[] args) {
User user=new User();
user.setName(“lisi”);
user.setMoney(new BigDecimal(“300”));
User1 user1=new User1();
user1.setAge(12);
user1.setSex(“nan”);
fanxing1(user);
fanxing1(user1);
}
//这是一个泛型方法 可以传入任何类型的对象 并输出他们的toString方法
//而不用为各种类型的对象创建各自的方法。
//这么用的好处就很明显了
public static <T> void fanxing1(T t)
{
System.out.println("这是泛型"+t);
}
}
在泛型中 还有 泛型通配符这个概念
其中的E就是上界
//此时的User1 没有继承User
public class User1 {
private int age;
private String sex;
}
public class fanxing<T > {
public static void main(String[] args) {
User user=new User();
user.setName("lisi");
user.setMoney(new BigDecimal("300"));
User1 user1=new User1();
user1.setAge(12);
user1.setSex("nan");
fanxing1(user);
//这里会报错
***fanxing1(user1);***
}
//因为方法中 定义 传入的类型只能是User的子类 继承自user类的
public static <T extends User> void fanxing1(T t)
{
System.out.println("这是泛型"+t);
}
}
与extends类似 传入的之只能是user的父类,这称为泛型的下界。 以上仅为初学笔记,如有错误欢迎指正!