认识泛型
-------------siwuxie095
泛型(Generic):
(1)泛型是在 JDK 1.5 之后增加的新功能。
(2)泛型可以解决数据类型的安全性问题,主要的原理:在类声明的时候通过
一个标识表示类中某个属性的类型或某个方法的返回值及参数类型
(3)格式:「泛型一般用 T 表示」
(4)对象的创建:
不使用泛型时:
代码:
package com.siwuxie095.generic;
/** *不使用泛型时: * 需要在不同情况下显示三种数据类型的经纬度: * int (不精准的数据) * float (精准的数据) * String (给出提示的数据) * 其实可以用 Object 类型来接收所有的类型 *最后需要进行类型转换 * @author siwux * */
class Point{ private Object x; private Object y;
//Alt+Shift+S(即 Source)->Generate Getters and Setters 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 GenericDemo01 {
public static void main(String[] args) { Point p=new Point(); p.setX(10); p.setY(10); //自动拆箱装箱(JDK 1.5 之后才增加了拆箱、装箱) int px=(Integer) p.getX(); int py=(Integer) p.getY(); System.out.println("x="+px+",y="+py+"\n");
p.setX(10.1f); p.setY(10.1f); float px1=(Float) p.getX(); float py1=(Float) p.getY(); System.out.println("x="+px1+",y="+py1);
// String类型同上 }
} |
运行一览:
对比:使用泛型时
代码:
package com.siwuxie095.generic;
/** *使用泛型时: * 需要在不同情况下显示三种数据类型的经纬度: * int (不精准的数据) * float (精准的数据) * String (给出提示的数据) * *最后不需要进行类型转换 * @author siwux * */
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 GenericDemo01 {
public static void main(String[] args) { //需要什么类型,就在 <> 尖括号中传入什么类型,如 Integer、String Point<String> p=new Point<String>(); p.setX("110"); p.setY("100"); //泛型的好处:不会出现类型转换的问题 System.out.println("x="+p.getX()+",y="+p.getY()); }
} |
运行一览:
【made by siwuxie095】
posted on 2017-03-18 21:59 siwuxie095 阅读(125) 评论(0) 编辑 收藏 举报