泛型(一)之定义说明
2016-07-16 11:30
567 查看
一、泛型类
1、使用Object类保存不同类型的对象
结论:向上转型的核心目的在于统一操作参数上,而向下转型的目的是操作子类定义的特殊功能,可是现在用Object存在向下转型是不安全的操作,因此从JDK1.5之后增加泛型,泛型技术的核心意义在于:类在定义的时候,可以使用一个标记,这个标记就表示类中属性或者方法参数的类型标记,在使用的时候才动态的设置标记
2、使用泛型
使用泛型后,所有类中的属性的类型都是动态设置的,而所有使用泛型标记的方法参数类型也都发生改变,这样避免了向下转型的问题,从而解决了类转换的安全隐患。
注意事项:1、如果想要使用泛型,那么它能够采用的类型,只能是引用类型
2、如果使用泛型或者是接口的时候,没有设置泛型具体类型,默认所有泛型都将使用Object表示
1、使用Object类保存不同类型的对象
class Point { private Object x; private Object y; public void setX(Object x) { this.x = x; } public void setY(Object y) { this.y = y; } public Object getX() { return x; } public Object getY() { return y; } } public class Main { public static void main(String[] args) { Point t = new Point(); t.setX(10); t.setY(20); //由于使用的是Object类,导致需要向下强制转型成Integer类 int x = (Integer) t.getX(); int y = (Integer) t.getY(); System.out.println("东经:" + x + ",西经:" + y); t.setX("东经10°"); t.setY("西经20°"); String s = (String) t.getX(); String s1 = (String) t.getY(); System.out.println(s + "," + s1); } }
输出结果:东经:10,西经:20 东经10°,西经20°
结论:向上转型的核心目的在于统一操作参数上,而向下转型的目的是操作子类定义的特殊功能,可是现在用Object存在向下转型是不安全的操作,因此从JDK1.5之后增加泛型,泛型技术的核心意义在于:类在定义的时候,可以使用一个标记,这个标记就表示类中属性或者方法参数的类型标记,在使用的时候才动态的设置标记
2、使用泛型
使用泛型后,所有类中的属性的类型都是动态设置的,而所有使用泛型标记的方法参数类型也都发生改变,这样避免了向下转型的问题,从而解决了类转换的安全隐患。
注意事项:1、如果想要使用泛型,那么它能够采用的类型,只能是引用类型
2、如果使用泛型或者是接口的时候,没有设置泛型具体类型,默认所有泛型都将使用Object表示
//此时设置的E在Point类定义表示一个不明确类型,在使用的时候再设置具体的类型 class Point<E> { //此属性的类型不知道,由Point类使用时动态决定 private E x; private E y; public void setX(E x) { this.x = x; } public void setY(E y) { this.y = y; } public E getX() { return x; } public E getY() { return y; } } public class Main { public static void main(String[] args) { Point<Integer> t = new Point<Integer>(); t.setX(10); t.setY(20); int x = (Integer) t.getX(); int y = (Integer) t.getY(); System.out.println("东经:" + x + ",西经:" + y); //从JDK1.7开始,可以简化声明类型 Point<String> t1 = new Point<>(); t1.setX("东经10°"); t1.setY("西经20°"); String s = (String) t1.getX(); String s1 = (String) t1.getY(); System.out.println(s + "," + s1); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树