泛型类,泛型方法,泛型接口

     

 
 

/ 泛型, 就是一种不确定的数据类型。 // // 如果在类后面加上<T>,这个类就变成了泛型类。这个T可以使用任意的字母代替。 //<T> 表示定义了一种不确定的数据类型,这种不确定的数据类型必须在使用这个类(比如创建对象)的时候才能确定下来。 // // 如果希望缩小泛型的范围,延后泛型的确定时间,让泛型在调用方法的时候确定,那么我们可以使用泛型方法。 // // 泛型方法的定义: // 修饰符 <E>返回值类型 方法名(参数列表) { // //.... // } // 泛型方法上的泛型,是要等到调用方法的时候才能确定到底是什么具体的类型。 // // 总结: // 泛型类指的是定义在类上的泛型,这种泛型需要在使用这个类的时候才能够确定 // 泛型方法是在方法上定义泛型,这种泛型是需要在调用方法的时候才能够确定类型到底是什么。 // // */ public class Factory<F>//定义了一个不确定的类型F { /* 定义方法,接收什么参数,就返回什么数据。 <F>表示定义了不确定了数据类型F 另外两个F表示使用这种不确定的类型F当做参数和返回值。 */ public<F> F method(F f){ System.out.println("修理完成"); return f; } public<E>E getSame(E e) { return e; } }

创建测试类

1创建对象时确认的泛型类型

public class Demo04Generic {
    public static void main(String[] args) {
        //使用这个类创建对象
        //此时确定出来的,Factory中的泛型是Phone类型
        Factory<Phone> f=new Factory<>();
        //调用method方法
        Phone p = f.method(new Phone());
        p.call();




        Factory<Pad> f2=new Factory<>();//创建对象时候,确定了返回值类型Pad

//new pad 也就是创建出来的对象pad,对象pad可以作为参数,f.method 调用参数,Pad pad=new Pad();
        Pad pad = f.method(new Pad());//此时方法中只能传递Pad参数
        pad.play();
    }

}
 
 

2调用方法时候,确认了泛型类型

public class Demo05Genric { public static void main(String[] args) { Factory<Phone> f=new Factory<>();//创建Factory对象,返回值类型为Phone //调用方法 Phone phone = f.getSame(new Phone()); phone.call(); Pad pad=f.getSame(new Pad()); pad.play(); String str = f.getSame("你好"); System.out.println(str); } }


猜你喜欢

转载自blog.csdn.net/qq_28761767/article/details/80939019