泛型

2018-12-01  本文已影响38人  城南一霸賈十七

泛型

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

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

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

泛型通配符

private static void getMessage(Message<? extends Number> message) {
        System.out.println(message.getInfo()); // 泛型通配符 不能设置属性值,但可以取属性的值
}

泛型接口

// 泛型接口类
interface IMessage<P>{
    void print(P p);
}
//具体实现类
class MessageImpl<R> implements IMessage<R>{
    public void print(R r) {
        System.out.println(r);
    }
}
// 测试
IMessage<String> iMessage = new MessageImpl<String>();
iMessage.print("hello world");
class MessageImpl implements IMessage<String>{
    public void print(String s) {
        System.out.println(s);
    }
}

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

泛型方法

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

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

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

\color{red}{泛型的本质思想:类的属性或方法的参数都可以是用户在使用的时候动态设置好的}

\color{red}{泛型解决的问题:对象向下转型带来的安全隐患}

上一篇 下一篇

猜你喜欢

热点阅读