1.泛型的基本概念
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数, 这种参数类型可以用在类,接口和方法的创建中,
分别被称为泛型类,泛型接口,泛型方法。
2.格式:
集合<标签名(类类型)> 变量 = new 集合<类类型> ();
3.泛型的好处
java语言引入泛型的好处就是安全简单。
(1)类型安全。
通过知道使用泛型定义的变量的类型限制,编译器可以更有效地提高Java程序的类型安全。
(2)消除强制类型转换。
消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。所有的强制转换都是自动和隐式的。
(3)提高性能。
示例:
以地球经纬度为例 (在没有使用泛型时)
class Point{
private Object x;
private Object y;
public Object getX() {
return x;
}
public void setX(Object x) {
this.x = x;
}
public Object getY() {
return y;
}
public void setY(Object y) {
this.y = y;
}
}
public class Dome {
public static void main(String[] args) {
Point p = new Point();
/*p.setX(10);
p.setY(10);
int px = (Integer) p.getX();
int py = (Integer) p.getY();*/ //正常运行
/*p.setX(10.2f);
p.setY(10.2f);
float px = (Float) p.getX();
float py = (Float) p.getY();*/ //正常运行
p.setX(10.2f);
p.setY(10.2f);
int px = (Integer) p.getX(); //在此时编译器并不报错
float py = (Float) p.getY();
System.out.println("x="+px+" y="+py);
//而当我们运行时会报以下错
Exception in thread "main" java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.Integer
at com.baidu.test.Dome.main(Dome.java:41)
}
那么在这种情况下,我们的泛型就运用而生,以下是使用泛型:
class Point<T>{
private T x;
private T y;
public T getX() {
return x;
}
public void setX(T x) {
this.x = x;
}
public T getY() {
return y;
}
public void setY(T y) {
this.y = y;
}
}
public class Dome {
public static void main(String[] args) {
Point<String> p = new Point<String>();
/*p.setX("纬度是:243");
p.setY("经度是:43");*/ //正常运行
p.setX(100);
p.setY("经度是:100"); //此时编译器就会直接报错
System.out.println(p.getX()+" "+p.getY());
}
4.泛型使用的注意事项
(1)泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
(2)泛型的类型参数可以有多个。
(3)不能对确切的泛型类型使用instanceof操作。
(4)不能创建一个确切的泛型类型的数组
刚刚接触Java 不足之处还请多多见解
此篇只是记录自学Java中的随笔记