java generic 介绍
来源:互联网 发布:做平面图用什么软件 编辑:程序博客网 时间:2024/06/04 01:31
一 介绍:
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
二、泛型参数:
class Gen<T> {private T ob; //定义泛型成员变量public Gen(T ob) {this.ob = ob;}public T getOb() {return ob;}public void setOb(T ob) {this.ob = ob;}public void showType() {System.out.println("T的实际类型是: " + ob.getClass().getName());}}public class GenericParameter {public static void main(String[] args){//定义泛型类Gen的一个Integer版本Gen<Integer> intOb=new Gen<Integer>(100);intOb.showType();int i= intOb.getOb();System.out.println("value= " + i);System.out.println("----------------------------------");//定义泛型类Gen的一个String版本Gen<String> strOb=new Gen<String>("Hello Dylan!");strOb.showType();String s=strOb.getOb();System.out.println("value= " + s);}}
output:
T的实际类型是: java.lang.Integer
value= 100
----------------------------------
T的实际类型是: java.lang.String
value= Hello Dylan!
三、泛型类:
class GenericsFoo<T> {private T x;public GenericsFoo(T x) {this.x = x;}public T getX() {return x;}public void setX(T x) {this.x = x;}}public class GenericClass {public static void main(String args[]){GenericsFoo<String> strFoo=new GenericsFoo<String>("Hello Generics!");GenericsFoo<Double> douFoo=new GenericsFoo<Double>(new Double("33"));GenericsFoo<Object> objFoo=new GenericsFoo<Object>(new Object());System.out.println("strFoo.getX="+strFoo.getX());System.out.println("douFoo.getX="+douFoo.getX());System.out.println("objFoo.getX="+objFoo.getX());}}
output:
strFoo.getX=Hello Generics!
douFoo.getX=33.0
objFoo.getX=java.lang.Object@1d0fafc
四 限制泛型:
import java.util.ArrayList;import java.util.Collection;class CollectionGenFoo<T extends Collection> {private T x;public CollectionGenFoo(T x) {this.x = x;}public T getX() {return x;}public void setX(T x) {this.x = x;}}public class GenericRestrict {public static void main(String[] args) {CollectionGenFoo<ArrayList> listFoo = null;listFoo = new CollectionGenFoo<ArrayList>(new ArrayList());CollectionGenFoo<? extends Collection> listFoo1 = null;listFoo1=new CollectionGenFoo<ArrayList>(new ArrayList());System.out.println("实例化成功!");}}
output:
实例化成功!
五 泛型方法:
public class GenericFunction {public <T> void f(T x) {System.out.println(x.getClass().getName());}public static void main(String[] args) {GenericFunction ea = new GenericFunction();ea.f(" ");ea.f(10);ea.f('a');ea.f(ea);}}
output:
java.lang.String
java.lang.Integer
java.lang.Character
GenericFunction
-----------------------------
dylan presents.
1 0
- java generic 介绍
- java Generic介绍
- Java Generic 介绍 (pdf)
- Java generic
- Java Generic
- java Generic
- Java Generic
- hibernate-generic-dao介绍
- Java 泛型 Java generic
- Java:泛型(generic)
- Java Generic Deep Copy
- Java泛型(Generic)
- JAVA 泛型(generic)
- Java泛型(Generic)
- Java 泛型 Generic
- effective java-generic
- java 泛型generic type
- java 泛型(generic)
- MD5和MD5破解的一些事
- java web开发学习-19 JNDI接口简介
- PHP再学习2——RT Thread + LwIP提交表单
- 题目1038:Sum of Factorials
- 菜单MENU学习日记
- java generic 介绍
- c++类内存布局的一些理解(1)
- hust 1017 dancing links
- 第十七周项目2-用指针玩字符串(统计单词个数)
- 17周项目五(6)。谁是小偷
- jQuery中的CSS操作
- sequence使用
- Postal Vans
- ffmpeg解码流程