深入理解java泛型详解,java泛型的定义和使用

  深入理解java泛型详解,java泛型的定义和使用

  

目录

I,泛型II,泛型类III,泛型方法IV,泛型接口V,类型通配符?六。可变参数

 

  

一、泛型

概述:

 

  泛型是JDK5中引入的一个特性,它提供了一个编译时类型安全检测机制,允许在编译时检测非法类型。

  本质上,它是一个参数化类型,即被操作的数据类型被指定为一个参数。

  参数化类型:就是将类型从原来的具体类型参数化,然后在使用/调用时传入具体参数。

  这种参数类型可以用在类、方法和接口中,分别称为泛型类、泛型方法和泛型接口。

  定义格式:

  1.类型:指定类型的格式,其中类型可以被视为一个参数。2.类型1,类型2.指定多种格式类型,用和分隔,其中类型可视为参数。3.将来,给定的类型可以被视为一个自变量,而自变量的类型只能是一个引用类型泛型的优点:.

  1.将运行时问题提前到编译时,这样更容易发现和处理。2.避免强制类型转换。

  

二、泛型类

定义格式:

 

  格式:修改器类类名T{}

  范例:公共类Gneneric{}

  这里T可以写成任意标识符,常用的参数如T,E,K,V等来表示泛型。

  当一个类使用泛型时,类中的成员变量不局限于一种类型,使用时只需声明是什么类型即可。

  泛型类

  public class GenericT { private T tpublic T getT(){ return T;} public void setT(T T){ this . T=T;} }调用格式:

  generic string=new generic string();g . sett( 102 );

  00-1010格式:修改器类型void方法名(类型参数){}

  范例:public void show(T T){ }

  泛型方法:

  public类Generic { public T void show(T T){ system . out . println(T);} }调用格式:

  public class Generic demo { public static void main(String[]args){ Generic g=new Generic();g . show(‘张三’);g . show(18);g.show(真);}}

  00-1010格式:修改器接口接口名称T{}

  范例:公共接口Gneneric{}

  实现格式:

  泛型接口

  公共接口generic T { void show(T T);}泛型接口实现类

  公共类GenericImplT实现generic T { @ Override public void show(T T){ system . out . println(T);} }测试类

  公众

  ic class GenericDemo {   public static void main(String[] args) {       GenericImpl<String> g1=new GenericImpl<String>();       g1.show("张三");       GenericImpl<Integer>g2=new GenericImpl<Integer>();       g2.show(12);       GenericImpl<Boolean>g3=new GenericImpl<Boolean>();       g3.show(true);       Generic<Double>g4=new GenericImpl<Double>();       g4.show(13.15);   }}

 

  

五、类型通配符<?>

为了表示各种泛型List的父类,可以使用类型通配符

 

  1.List<?>:表示元素类型位置的List,它的元素可以匹配任何的类型2.这种带通配符的List仅代表它是各种泛型List的父类,并不能把元素添加到其中如果说我们不希望List<?>是任何泛型List的父类,只希望它代表某一类泛型List的父类,可以使用类型通配符的上限

  1.类型通配符的上限:<?extends 类型>2.List<? extends Number>:他表示的类型是Number或者其子类型同样的我们也可以指定下限

  1.类型通配符下限:<? super 类型>2.List<? super Number>:表示的类型是Number或者其父类型

 

  

六、可变参数

可变参数又称参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的了

 

  格式:修饰符 返回值类型 方法名(数据类型... 变量名){}

  范例:public static int sum(int...a){}

  注意事项:

  1.这里的变量是一个数组2.如果一个方法有多个参数,并且包含可变参数,那么可变参数要放在最后可变参数的使用:

  Arrays工具类中有一个静态方法

  public static<T>List<T>asList(T...a):返回由指定数组支持的固定大小的列表

  返回的集合不能做增删操作,可以做修改操作

  List接口中有一个静态方法:

  public static<E>List<E>of(E...elements):返回包含任意数量元素的不可变列表

  返回的集合不能做增删改操作

  Set接口中有一个静态方法:

  public static<E>Set<E>of(E...elements):返回一个包含任意数量元素的不可变集合

  返回的集合不能做增删操作,没有修改方法

  再给元素时,不能给重复的元素

  到此这篇关于Java基础学习泛型的文章就介绍到这了,更多相关Java 泛型内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: