您的位置:首页 > 编程语言 > Java开发

Java泛型结合实例详解

2015-10-15 21:15 543 查看
浏览过一些介绍泛型的博客,感觉一些学术定义的陈列还是比较晦涩难懂,在这里我以一个打印学生年龄的例子来介绍一下自己对泛型的理解。

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 泛型 博客