Java:泛型和反射

泛型:

在编译阶段检查了类型是否一致,避免了向下转型时类型转换异常 

Java:泛型和反射_第1张图片 

//定义一个泛型类
public class TestMethod {

    //只是使用了泛型参数的普通方法
    public void testMethod(T t){
        System.out.println(t);
    }

    /**
     * 使用了泛型定义的泛型方法,
     * 泛型方法以自己的类型参数为准,
     * 与泛型类中的T无关
     */
    public  E funMethod(E e){
        return e;
    }

    public static void main(String[] args) {
        TestMethod testMethod = new TestMethod();
        testMethod.testMethod("泛型NB");  //泛型NB

        Integer i1 = testMethod.funMethod(123);
        System.out.println(i1);  //123
    }
}

泛型可以声明在接口中,子类可以有两种选择 :

public interface IMessage {
    void print(T t);
}

a.子类继续保留泛型 

/**
 * 子类实现接口时,继续使用泛型,子类也不知到要使用什么类型
 * @param 
 */
public class MessageImpl1  implements IMessage{
    @Override
    public void print(T t) {
        System.out.println(t);
    }
}

b.子类明确类型 

/**
 * 子类在实现接口时明确类型
 */
public class MessageImpl2 implements IMessage{
    @Override
    public void print(String s) {
        System.out.println(s);
    }
public static void main(String[] args) {
        //子类是泛型,子类产生对象时是什么类型,就是什么类型
       IMessage iMessage1 = new MessageImpl1<>();
       iMessage1.print("NB!!!");
       IMessage iMessage2 = new MessageImpl1();
       iMessage2.print(123);

你可能感兴趣的:(java,开发语言)