【泛型】泛型简介和泛型类
2016-12-10 20:54
148 查看
1. 泛型简介
在泛型引入之前,如果我们需要产生多个对象,每个对象的逻辑完全一样,只是对象内的成员变量的类型不同,那么我们只能创建多个类文件,给每个类的成员变量设置不同的数据类型。这么做会导致类的膨胀,重用性太差。一种方式是对将Object作为变量类型,但是需要对获取的数据进行强制类型转换,这个过程可能导致类型转换异常。
另一种方式,泛型是解决上述问题的有效方法。
泛型是JDK 1.5 引入的新特性
反省可以在翻译的时候检查类型安全,并且所有的强制转换都是自动和隐式的
泛型的原理就是“类型参数化”,把所要操作的数据类型看做参数,就像方法的形参是运行时传递的值的占位符一样
反省可以提高代码的扩展性和重用性
泛型即通过参数化类型来实现在同一份代码上操作多种数据类型,泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。
2. 泛型类
泛型类://一般用T、K、V代表泛型 class GenClass<T>{ private T obj; public GenClass(T){ this.obj=obj; } public T getObj(){ return obj; } public void setObj(T obj){ this.obj=obj; } }
泛型实例化:
public static viod main(String [] args){ GenClass<Integer> intGenClass1=new GenClass<Integer>(120); System.out.println(intGenClass1.getObj); GenClass<String> intGenClass2=new GenClass<String>("Name"); System.out.println(intGenClass2.getObj); ... }
泛型类的常规用法:
- 泛型的类型参数可以使泛型类
GenClass<GenClass<Student>> genOuter=new GenClass<GenClass<Student>>(); GenClass<Student> genInnter=new GenClass<Student>(); genInnter.setData(new Student("xiaoming")); genOuter.setData(genIntter); System.out.println(genOuter.getData().getData().toString);
泛型类可以同时设置多个参数的类型
class GenClass2<K,V>{ private K data1; pricate V data2; public GenClass2(){ } public GenClass2(K data1,V data2){ this.data1=data1; this.data2=data2; } public K getData1(){ return data1; } public V getData2(){ return data2; } }
public static void main(String[] args){ GenClass2<String,Integer> gen=new GenClass2<String,Integer>("lilei",20); System.out.println(gen.getData1()+"-"+gen.getData2()); }
泛型类可以继承泛型类
泛型类可以实现泛型接口
class SuperClass<T1>{ private T1 data1; public SuperClass(T1 data1){ this data1=data1; } public T1 showData1(){ return T1 data1; } } interface IInfo<T2>{ public void showData(T2 data); } class SubClass<T1,T2> extends SuperClass<T1> implements IInfo<T2>{ private T1 data1; private T2 data2; public SubClass(T1 data1,T2 data2){ super(data1); this.data2=tada2; } //重写了父类的方法 public T1 showData1(){ return super.showData1(); } //实现接口的showData方法 public T2 showData(T2 data){ return data; } }
相关文章推荐
- 泛型简介,泛型类及使用
- 泛型类 泛型方法
- 创建定制的泛型类--泛型Queue多线程读写文档--的泛型方法
- C#2.0泛型介绍之简单泛型类。
- C#2.0泛型介绍之简单泛型类。
- C# 写的一个泛型类和泛型方法示例
- 使用C#反射中的MakeGenericType函数,来为泛型方法和泛型类指定(泛型的)类型
- Rhyme/Java泛型I 泛型类 泛型接口 泛型方法
- 泛型(一)简介
- java语言基础(69)——集合框架(泛型的多种应用场景、泛型类、泛型方法、泛型接口)
- 泛型简介
- 《从LRS项目重构来看‘泛型’(一)——追根寻源,看C++中的模板技术简介》
- 泛型--定制泛型接口、泛型类(转载)
- 泛型方法、泛型类、泛型接口
- 泛型学习(可空类型,排序,定义泛型类,变体(协变与抗变))
- Java中的泛型简介
- 泛型类,泛型方法,dynamic, default
- java泛型程序设计——定义简单泛型类+泛型方法
- 泛型方法或泛型类中的方法是内部调用、PInvoke 或是在 COM 导入类中定义的。
- 泛型(1)--泛型类及其泛型特性