Java 泛型分析
来源:互联网 发布:crm软件排名 编辑:程序博客网 时间:2024/05/18 07:05
public class Demo { public static void main(String[] args){ Point p = new Point(); p.setX(10); // int -> Integer -> Object p.setY(20); int x = (Integer)p.getX(); // 必须向下转型 int y = (Integer)p.getY(); System.out.println("This point is:" + x + ", " + y); p.setX(25.4); // double -> Integer -> Object p.setY("东京180度"); double m = (Double)p.getX(); // 必须向下转型 double n = (Double)p.getY(); // 运行期间抛出异常 System.out.println("This point is:" + m + ", " + n); }}class Point{ Object x = 0; Object y = 0; 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; }}
可以用Object,但是用Object,向下转型的时候编译期没有问题,但是运行时可能抛出exception。
double n = (Double)p.getY(); // 运行期间抛出异常
泛型可以解决这个问题。它可以接受任意类型的数据。所谓“泛型”,就是“宽泛的数据类型”,任意的数据类型。
public class Demo { public static void main(String[] args){ // 实例化泛型类 Point<Integer, Integer> p1 = new Point<Integer, Integer>(); p1.setX(10); p1.setY(20); int x = p1.getX(); int y = p1.getY(); System.out.println("This point is:" + x + ", " + y); Point<Double, String> p2 = new Point<Double, String>(); p2.setX(25.4); p2.setY("东京180度"); double m = p2.getX(); String n = p2.getY(); System.out.println("This point is:" + m + ", " + n); }}// 定义泛型类class Point<T1, T2>{ T1 x; T2 y; public T1 getX() { return x; } public void setX(T1 x) { this.x = x; } public T2 getY() { return y; } public void setY(T2 y) { this.y = y; }}
泛型方法
public class Demo { public static void main(String[] args){ // 实例化泛型类 Point<Integer, Integer> p1 = new Point<Integer, Integer>(); p1.setX(10); p1.setY(20); p1.printPoint(p1.getX(), p1.getY()); Point<Double, String> p2 = new Point<Double, String>(); p2.setX(25.4); p2.setY("东京180度"); p2.printPoint(p2.getX(), p2.getY()); }}// 定义泛型类class Point<T1, T2>{ T1 x; T2 y; public T1 getX() { return x; } public void setX(T1 x) { this.x = x; } public T2 getY() { return y; } public void setY(T2 y) { this.y = y; } // 定义泛型方法 public <T1, T2> void printPoint(T1 x, T2 y){ T1 m = x; T2 n = y; System.out.println("This point is:" + m + ", " + n); }}
泛型接口
public class Demo { public static void main(String arsg[]) { Info<String> obj = new InfoImp<String>("www.weixueyuan.net"); System.out.println("Length Of String: " + obj.getVar().length()); }}//定义泛型接口interface Info<T> { public T getVar();}//实现接口class InfoImp<T> implements Info<T> { private T var; // 定义泛型构造方法 public InfoImp(T var) { this.setVar(var); } public void setVar(T var) { this.var = var; } public T getVar() { return this.var; }}
http://www.weixueyuan.net/view/6321.html
阅读全文
0 0
- Java泛型分析
- Java 泛型分析
- JAVA泛型深入分析
- java 重点分析泛型
- Java学习记录--泛型擦除分析
- java泛型出现原因分析
- java浮点型分析
- 分析一下为什么JAVA不支持泛型类型的数组
- 分析一下为什么JAVA不支持泛型类型的数组
- 程序媛Java学习记录之泛型擦除分析
- 分析一下为什么JAVA不支持泛型类型的数组
- Java学习记录–泛型擦除分析
- java分析
- Java不支持创建范型数组分析
- 从字节码角度分析java泛型数组的问题
- 泛型分析
- java异常机制分析
- java 异常处理分析
- 数人云|一文读懂企业如何落地微服务,循序渐进5步走
- Unreal Engine 4 —— Asset Manager介绍
- effective C++ 2_尽量以const,enum,inline替换#define 的学习
- Java调用shell命令解压.7z压缩包
- 2.关键字(finalize、volatile、static、switch、操作符)
- Java 泛型分析
- 2个指定数的随机数函数
- 上那些网站寻找javascript插件?
- 数人云|还在为负载均衡操碎心?这里有10大开源负载均衡工具
- 微信公众平台开发入门教程
- Excel横坐标变粗线
- 汇编基础-实例分析
- 10gen工程师谈MongoDB组合索引的优化
- 【springboot笔记】学习springboot一篇就够,持续更新...