Java泛型结合实例详解
2015-10-15 21:15
543 查看
浏览过一些介绍泛型的博客,感觉一些学术定义的陈列还是比较晦涩难懂,在这里我以一个打印学生年龄的例子来介绍一下自己对泛型的理解。
一.泛型的使用规则
首先看一下Children类,第一行程序class Children< T >便出现了泛型的运用,表明类使用泛型,泛型用单书名号表示——<>,其中T只是一个标志(比较常用),我们可以定义任何内容为标志,比如class Children < SB >。
二.为何要使用泛型
今天我们围绕Children类的age属性来介绍泛型,那么我们来看代码“private T age;”,这里T代表一种特殊的数据类型——泛型,那么我们为什么不用常规的数据类型来定义呢(比如 int,String,float等等),问题就出在这里,假如我们用int来定义年龄age,也就是
那么前面主函数中
好了,假如我想用浮点数表示呢,用字符串表示呢,比如要输出的是“三十”岁,可以这样写吗??——
三.怎么使用泛型
在这里我们这样来定义一个类
在主类中我们采用拆箱直接赋值的方式
最后输出
四 .总结
本文介绍的是泛型最浅显的理解,不过也是最容易接受的,适合像作者一样菜的鸟,随着学习的深入,将会继续完善文章内容,从泛型的学习可以看到Java开发者为我们想到了所有可能带来麻烦的情况,足以体现Java无穷的潜力和魅力。
五.问题
如果我们将age定义为Object类可以实现吗????
package 泛型; public class GenericDemo { public static void main(String[] args) { Children<Integer> c1=new Children<Integer>("小白",20); Children<Float> c2=new Children<Float>("小红",24.2f); Children<String> c3=new Children<String>("小白","三十"); int t1=c1.getAge(); float t2=c2.getAge(); String t3=c3.getAge(); System.out.println(c1.getName()+"的年龄是"+t1+"岁"); System.out.println(c2.getName()+"的年龄是"+t2+"岁"); System.out.println(c3.getName()+"的年龄是"+t3+"岁"); } } class Children<T>{ private String name; private T age; public String getName() { return name; } public void setName(String name) { this.name = name; } public T getAge() { return age; } public void setAge(T age) { this.age = age; } public Children(String name,T age) { super(); this.name=name; this.age=age; } }
一.泛型的使用规则
首先看一下Children类,第一行程序class Children< T >便出现了泛型的运用,表明类使用泛型,泛型用单书名号表示——<>,其中T只是一个标志(比较常用),我们可以定义任何内容为标志,比如class Children < SB >。
二.为何要使用泛型
今天我们围绕Children类的age属性来介绍泛型,那么我们来看代码“private T age;”,这里T代表一种特殊的数据类型——泛型,那么我们为什么不用常规的数据类型来定义呢(比如 int,String,float等等),问题就出在这里,假如我们用int来定义年龄age,也就是
private int age;
public Children(String name,int age){}//构造函数
那么前面主函数中
Children c1=new Children("小白",20);可以通过
int t1=c1.getAge();来拆箱,到最后通过
System.out.println(c1.getName()+"的年龄是"+t1+"岁");输出。可以,程序运行成功。
好了,假如我想用浮点数表示呢,用字符串表示呢,比如要输出的是“三十”岁,可以这样写吗??——
Children c3=new Children("小白","三十");很明显是不可以的,因为在构造方法中早将age限制为了int型
public Children(String name,int age),那么有没有一种做法可以同时定义多种数据类型,用户年龄想用什么数据类型表示都可以,当然有,那就是广泛的类型——泛型。
三.怎么使用泛型
在这里我们这样来定义一个类
class Children<T>{}这样来定义一个变量
private T age;这样来写构造函数
public Children(String name,T age){}
在主类中我们采用拆箱直接赋值的方式
int t1=c1.getAge(); //age为整型 float t2=c2.getAge(); //age为浮点型 String t3=c3.getAge(); //age为字符串
最后输出
System.out.println(c1.getName()+"的年龄是"+t1+"岁"); System.out.println(c2.getName()+"的年龄是"+t2+"岁"); System.out.println(c3.getName()+"的年龄是"+t3+"岁");
四 .总结
本文介绍的是泛型最浅显的理解,不过也是最容易接受的,适合像作者一样菜的鸟,随着学习的深入,将会继续完善文章内容,从泛型的学习可以看到Java开发者为我们想到了所有可能带来麻烦的情况,足以体现Java无穷的潜力和魅力。
五.问题
如果我们将age定义为Object类可以实现吗????
相关文章推荐
- 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简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统