• 泛型测试1


    package GeneicDemo;

    public class GenericDemo {

    /** 泛型测试
    * @param args
    */
    public static void main(String[] args) {
    //创建一个泛型类对象:在类名后面用一对尖括号<>把要传递的数据类型参数包起来,然后创建对象
    GenClass<String> gen1 = new GenClass<String> ("lucy");
    System.out.println(gen1.getData());
    //自动做强制类型转换,gen1.getData()返回的是一个String类型的字符串
    //接下来再创建一个对象,结构一样,只是它的数据类型是整型,该怎么做?只需将String 改成Integer即可
    GenClass<Integer> gen2 = new GenClass<Integer> (100);
    System.out.println(gen2.getData()); //gen2.getData()返回一个int类型的数据
    //通过上面2个创建对象的过程,可以看到,只创建了一个类,但是却能构建2个不同数据类型的对象,使用起来很方便


    //验证:泛型的类型参数(也就是<T>)可以是泛型类
    GenClass<GenClass<Student>> gen3 = new GenClass<GenClass<Student>>();
    //GenClass<Student>作为了类型参数,先需要产生一个Student对象
    GenClass<Student> gen4 = new GenClass<Student>();
    gen4.setData(new Student("张三"));
    gen3.setData(gen4);
    System.out.println(gen3.getData().getData().toString());
    //带有2个类型参数的泛型类的实例的创建
    GenClass2<String,Integer> gen5 = new GenClass2<String,Integer>("jack",30);
    System.out.println(gen5.getData1());
    System.out.println(gen5.getData2());

    }

    }

    //创建一个含有多个类型参数的泛型类,并对类的属性值设置不同的参数类型,如下:
    class GenClass2 <T1,T2> {
    private T1 data1;
    private T2 data2;
    public GenClass2(T1 data1,T2 data2) { //构造方法,接收2个参数
    this.data1 = data1;
    this.data2 = data2;
    }

    public T1 getData1() {
    return data1; //为封装的属性添加访问方法,返回值类型是T1
    }
    public T2 getData2() {
    return data2; //为封装的属性添加访问方法,返回值类型是T2
    }
    }


    /*创建一个泛型类 ,(其实也就是个模板类)T可以认为是代表一个变量名,
    用来接收这个类构造对象时传递过来的数据类型*/
    /*当构造对象时,传进来的是整型,那么类中所有变量,方法处,都是整型,如果
    * 传进来的是String类型,那么类中所有的变量和方法处,数据类型都是String类型
    * (所有的T都变成String),这样,这个类就可以被重用。*/
    class GenClass <T> {
    private T data;
    public GenClass() {

    }
    public GenClass(T data) {
    this.data = data;
    }
    public void setData(T data) {
    this.data = data;
    }

    public T getData() {
    return data;
    }
    }

    class Student {
    private String name;
    public Student(String name) {
    this.name = name;
    }
    public String toString() {
    return "我是" + name;
    }
    }

  • 相关阅读:
    HDU 1863 畅通工程(并查集)
    HDU 1232 畅通工程
    洛谷 1162 填涂颜色 (dfs,染色法)
    HDU 2689 sort it(树状数组 逆序数)
    mod_js.so下载 转自网络
    The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    B计划 第七周
    B计划 第六周
    B计划 第五周
    B计划 第四周(开学第一周)
  • 原文地址:https://www.cnblogs.com/enjoyjava/p/6842989.html
Copyright © 2020-2023  润新知