`
GavinZheng
  • 浏览: 15297 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

java泛型

阅读更多

泛型:本质是参数化类型,即将操作的数据类型指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

好处是安全简单。

 

规则和限制

1、 泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。

eg.T〉所传递的类型只能为类类型,不能为基本类型。

2、 同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。

eg. ArrayListString, ArrayListInteger

3、 泛型的类型参数可以有多个。

eg. <T, P,Q> ,同时还可以嵌套泛型,例如: <List<String>> .

4、 泛型的参数类型可以使用extends语句(习惯上称为“有界类型”)和使用 super 语句。

eg. <T extends superclass>。表示类型只能接受所有实现或继承superclass(接口或类)的类。

eg. <T super Double>,表示类型只能接受Double及其上层父类类型,如NumberObject类。

5、 泛型的参数类型还可以是通配符类型。

eg.Class<?>

eg. <? extends superclass>

 

例子:

类泛型

public class Gen<T>{

    private T x;

   

    public Gen(T x){

       this.x = x;

    }

    public T getX() {

       return x;

    }

    public void setX(T x) {

       this.x = x;

    }

   

    public static void main(String[] args){

       Gen<String> strFoo=new Gen<String>("Hello Generics!");

       Gen<Double> douFoo=new Gen<Double>(new Double("33"));

       Gen<Object> objFoo=new Gen<Object>(new Object());

       System.out.println("strFoo.getX="+strFoo.getX());

       System.out.println("douFoo.getX="+douFoo.getX());

       System.out.println("objFoo.getX="+objFoo.getX());

    }

}

 

限制泛型:

注意:定义CollectionGenFoo<T extends Collection>

以下会出错。要改为通配型就不会出错

CollectionGenFoo<Collection> listFoo = null;

listFoo=new CollectionGenFoo<ArrayList>(new ArrayList());

改成通配型,就不会出错。

CollectionGenFoo< T extends Collection> listFoo = null;

listFoo=new CollectionGenFoo<ArrayList>(new ArrayList());

 

泛型方法:

public class Gen{

    public <T> void f(T x){

       System.out.println(x.getClass().getName());

    }

}

需要注意,一个static方法,无法访问泛型类的类型参数,所以,若要static方法需要使用泛型能力,必须使其成为泛型方法

eg:

public class Gen{

    public static <T> void f(T x){

       System.out.println(x.getClass().getName());

    }

}

分享到:
评论

相关推荐

    Java泛型编程指南.pdf

    Java泛型编程指南.pdf 此文章译自SUN的泛型编程指南

    Java泛型和集合

    Java Generics and Collections 英文版,详细描述java 泛型技术

    java 泛型类的类型识别示例

    java 泛型类的类型识别示例 java 泛型类的类型识别示例 java 泛型类的类型识别示例

    java 泛型接口示例

    java 泛型接口示例 java 泛型接口示例 java 泛型接口示例

    java 泛型方法使用示例

    java 泛型方法使用示例 java 泛型方法使用示例 java 泛型方法使用示例

    Java泛型的用法及T.class的获取过程解析

    主要介绍了Java泛型的用法及T.class的获取过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    JAVA泛型加减乘除

    这是一个使用JAVA实现的泛型编程,分为两部分,第一部分创建泛型类,并实例化泛型对象,得出相加结果。 第二部分用户自行输入0--4,选择要进行的加减乘除运算或退出,再输入要进行运算的两个数,并返回运算结果及...

    java泛型技术之发展

    java泛型技术之发展,学习JAVA 泛型的不错东东

    1.java泛型定义.zip

    1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1....

    很好的Java泛型的总结

    很好的Java泛型的总结,看完之后你一定会知道java泛型的底层机制,你一定会学会Java泛型!

    4.java泛型的限制.zip

    4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip...

    java泛型学习ppt

    java,学习java泛型,java培训之泛型.pptxjava培训之泛型.pptxjava培训之泛型.pptxjava培训之泛型.pptx

    java泛型总结

    深入理解java泛型,包括类名泛型的定义,方法泛型定义,泛型的返回

    SUN公司Java泛型编程文档

    Sun公司的Java泛型编程文档,英文原版和网络翻译版,想对泛型有更清楚的认识的朋友可以看看,必定会有所帮助

    java泛型详解.pdf

    java泛型详解.pdf

    JAVA泛型简单排序实例

    JAVA泛型源代码实现以下功能:返回数组元素的最大值/最小值下标;判断数组元素是否按升序排列;T对象数组排序;二分法查找key元素;

    思维导图之Java泛型详解

    思维导图之Java泛型详解

    Java泛型技术之发展

    Java泛型技术之发展

    JAVA泛型教程(帮你解决学习泛型的苦恼)

    JAVA泛型教程(帮你解决学习泛型的苦恼). Java 泛型编程可能会碰到很多问题,本教程可能会对你有帮助哦。

Global site tag (gtag.js) - Google Analytics