深入理解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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。