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

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

作者: 鼾声鼾语 | 来源:发表于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

相关文章

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

    所谓的泛型类就是运用到泛型技术的类,如上面讲到的ArrayList,Iterator等都是java中的...

  • CoreJava笔记 - 范型程序设计(2)

    范型代码和Java虚拟机 关键知识:类型擦除Java的范型是编译器层次的范型,而在Java虚拟机上并没有范型类。在...

  • Objective-C 范型

    系统库范型 Objective C支持轻量级的范型。在编写自定义的范型类之前,我们先来看看Cocoa Touch的...

  • Kotlin范型摘要

    范型类型参数 声明范型类型 你还可以用同样的语法声明泛型的扩展属性。 可以给类或接口的方法、顶层函数,以及扩展函数...

  • CoreJava笔记 - 范型程序设计(5)

    反射与范型 由于类型擦除,反射无法得到关于范型类型参数的信息。 范型的Class类在Java的反射库中,Class...

  • java基础知识梳理&泛型初探

    目录 概述 范型的使用 类型参数 类型通配符 泛型方法 泛型类 限定类型参数上限 上界通配符(Upper Boun...

  • iOS范型

    范型使用场景:1、在集合(数组,字典,NSSet)中使用范型比较常见2、当声明一个类,类里边的某些属性的类型不确定...

  • 泛型

    java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一Java泛型深入理解加泛型面试数组的协变性与范型的不可变性

  • C#-IEnumerator与IEnumerable

    IEnumerable是所有可迭代非范型类的基础接口。IEnumerable包括一个方法GetEnumerator...

  • Java自定义注解实现Redis自动缓存

    自定义注解+AOP+范型方法实现Redis自动缓存 相关文章:Java自定义注解动态代理与AOPJava范型 在实...

网友评论

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

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