码迷,mamicode.com
首页 > 编程语言 > 详细

java泛型

时间:2019-12-30 17:46:45      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:turn   next   get   nts   family   判断   无法访问   code   int   

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泛型

标签:turn   next   get   nts   family   判断   无法访问   code   int   

原文地址:https://www.cnblogs.com/buaaZhhx/p/12120412.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!