美文网首页
范型容易理解的方法,类的范型是什么意思

范型容易理解的方法,类的范型是什么意思

作者: 鼾声鼾语 | 来源:发表于2020-04-01 15:45 被阅读0次

    所谓的泛型类就是运用到泛型技术的类,如上面讲到的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

    相关文章

      网友评论

          本文标题:范型容易理解的方法,类的范型是什么意思

          本文链接:https://www.haomeiwen.com/subject/hdrauhtx.html