所谓的泛型类就是运用到泛型技术的类,如上面讲到的ArrayList<E>,Iterator<E>等都是java中的泛型类,这些类都是Java已经定义好的泛型类,直接使用就可以了。但有时候我们会遇到这样的问题:
假设我们现在有两个自定义类:Worker类和Student类,现在我们需要一个工具类Tool来获取Worker对象和Student对象,并能对对象进行操作。
分析:我们可能会想到将Worker和Student类作为Tool类的成员变量,以此来实现对这两个类的操作。但这样有一个问题,就是如果这不是两个类而是很多类,甚至说无数个类,即Tool类可以操作任意类,这种通过添加成员变量来实现调用对象的方法显然不可行。注意这个“添加任意对象”,这不就是上面说的ArrrayList<E>这些类所具有的特点吗?泛型类就是为了解决“添加任意对象”而产生的,这里提到的ArrayList<E>属于已定义泛型类(Java中自带的),这里我们要用到Tool类来“存储任意对象”,所以要将Tool类定义为泛型类,这就是根据需求自己设计的自定义泛型类:
我们直接上代码:
//Worker类:
package bean;
public class Worker {
private String name;
private int age;
Worker(){
}
Worker(String name,int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
//Student类:
package bean;
public class Student {
private String name;
private String sex;
Student(){
}
Student(String name,String sex){
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
//范型Tool类
package bean;
public class Tool<E> {
private E e;
public Tool(E e1){
this.e = e1;
}
public E getE() {
return e;
}
public void setE(E e) {
this.e = e;
}
}
//测试方法
package bean;
class Tooltest{
public static void main(String[] args) {
//假设有两个对象:一个学生,一个工人
Student t1 = new Student("张三","男");
Worker w1 = new Worker("李四",20);
//现在我们使用Tool类来调用t1和w1
Tool<Student> ts = new Tool<Student>(t1);
Tool<Worker> tw = new Tool<Worker>(w1);
//打印查看效果
System.out.println("使用ts调用t1中的数据:"+ts.getE().getName()+":"+ts.getE().getSex());
System.out.println("使用tw调用w1中的数据:"+tw.getE().getName()+":"+tw.getE().getAge());
}
}
打印结果为:
使用ts调用t1中的数据:张三:男
使用tw调用w1中的数据:李四:20
网友评论