java泛型

Posted 笨宝宝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java泛型相关的知识,希望对你有一定的参考价值。

Java泛型

解耦类或方法与类型之间的约束。

泛型出现的一个原因:容器类

 

泛型类

只能持有单个对象的类

如何持有别的类型的对象?使用object

通常来说,我们只持有一种类型的对象,泛型的目的是指定持有哪种对象。

泛型接口

Public interface Generator<T>{ T next(); }

Public class CoffeGenerator implements Generator<Coffee>{ public Coffee next();}

泛型方法

泛型方法可独立于类,尽量使用泛型方法。(Public <T> void f(T x));对于static方法,若需要使用泛型能力,就必须使其成为泛型方法,因为static发发无法访问泛型类的类型参数。

(public static <K,V> Map<K,V> map(){})

在使用泛型类时,在创建对象时必须指定类型参数,而调用方法时,无需指定,编译器会做类型参数判断,相当于重载。

调用泛型方法后,其返回值会被赋给一个Object类型的变量。

可变参数与泛型方法

public static <T> List<T> makeList(T… args){}

 

匿名内部类

class Teller{
    public static Generator<Teller> generator(){
        return new Generator<Teller>(){
            public Teller next(){
                return new Teller();
            }
        };
    }
}

 

泛型的擦除

class c1 = new ArrayList<String>().getClass();
class c2 = new ArrayList<Integer>().getClass();
return (c1==c2)//True

在泛型代码内部,无法获得任何有关泛型参数类型的信息。使用边界信息(extends)

擦除的补偿

显示地传递class对象

局限性

基本类型无法作为类型参数。(不过Java SE5具备自动拆包、装包功能)

 

以上是关于java泛型的主要内容,如果未能解决你的问题,请参考以下文章

201621123062《java程序设计》第九周作业总结

什么意思 在HashMap之前 ? Java中的泛型[重复]

这个嵌套类构造函数片段可以应用于泛型类吗?

201621123037 《Java程序设计》第9周学习总结

Java——泛型

作业09-集合与泛型