泛型

泛型

在类定义的时候不设置具体的类型,只做一个标记,在使用的时候才会动态绑定一种数据类型。

 class Message {// T Type  P Param R Return
    private T info;
    public T getInfo() {
        return info;
    }
    public void setInfo(T info) {
        this.info = info;
    }
}

 // 类实例化的时候动态绑定数据类型
Message message = new Message();

泛型通配符

  • Class

  • Class 设置泛型的上限 ,只能设置T或者其子类

private static void getMessage(Message message) {
        System.out.println(message.getInfo()); // 泛型通配符 不能设置属性值,但可以取属性的值
}
  • Class 设置泛型的下限,只能设置T或者其父类

泛型接口

  • 子类继续使用泛型
// 泛型接口类
interface IMessage

{ void print(P p); } //具体实现类 class MessageImpl implements IMessage{ public void print(R r) { System.out.println(r); } } // 测试 IMessage iMessage = new MessageImpl(); iMessage.print("hello world");

  • 子类定义不使用泛型,直接给父接口定义好泛型。
class MessageImpl implements IMessage{
    public void print(String s) {
        System.out.println(s);
    }
}

IMessage iMessage = new MessageImpl();
iMessage.print("hello world");

泛型方法

如一个方法使用了泛型,那这个方法就是泛型方法。

    /**
     *
     *  T[]  --->表示申明泛型并使用泛型
     * @param args 可变的泛型 T 类型
     * @param 
     * @return
     */
    public static  T[] fun(T...args){
        return args;
    }

    // 测试
   Integer[] temp = fun(1, 2, 3);
   for (Integer t : temp) {
      System.out.println(t);
   }     

你可能感兴趣的:(泛型)