欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

泛型——泛型类

程序员文章站 2024-03-15 10:43:17
...

泛型类

  1. 对象实例化时不指定泛型,默认的泛型为 Object 类型

    A a3 = new A();//不指定泛型时,默认的泛型为 Object 类型
    // A<Object> a3 = new A<Object>();
    a3.setKey(new Object());
    Object obj = a3.getKey();
    
  2. 泛型不同的引用不能相互赋值,例如以下两个:

    A<Integer> a1 = new A<Integer>();
    A<String> a2 = new A<String>();
    // 不能 a1 = a2;
    
  3. 在 new 对象时,指定的泛型为什么,对象使用的 set/get 方法中就得是什么类型的值。

public class Demo01 {
    public static void main(String[] args) {

        A<Integer> a1 = new A<Integer>();//在 new 对象时,指定的泛型为 Integer
        a1.setKey(1);//对象使用的 setKey(T key)方法中的 key 就是 Integer 类型
        System.out.println(a1.getKey());

        A<String> a2 = new A<String>();
        a2.setKey("a");
        System.out.println(a2.getKey());

        A a3 = new A();//不指定泛型时,默认的泛型为 Object 类型
        // A<Object> a3 = new A<Object>();
        a3.setKey(new Object());
        Object obj = a3.getKey();

    }
}

/**
 * 这里的泛型 T 可以任意取名
 * 但推荐为 T (Type类型的意思)
 * @param <T>
 */
class A<T> {
    private T key;

    public T getKey() {
        return key;
    }

    public void setKey(T key) {
        this.key = key;
    }
}
相关标签: Java学习过程