分类: Java
2011-02-18 19:33:12
EGenericType就是Java范型。C++对范型有很好的支持。
Java是从5.0版本之后开始支持范型的。
简单说说范型,然后对上图的理解就很容易了。
普通范型,类的定义:
class Sample1
class Sample2
方法里对范型的应用:
通配符:
public void operation1(Sample1> smpl)
operation1方法将可以接收任何类型的Sample1。
受限类型
public void operation2(Sample1 extends Number> smpl)
operation2将只接收参数是继承于Number的Sample1
public void operation3(Sample1 super Number> smpl)
operation3将只接收参数是Number的超类的Sample1
范型接口:
interface Sample1If
interface Sample2If
实现类
class Sample1Impl
class Sample2Impl<K, V> implements Sample2If<K, V>
实现类也可以实现范型的一个实例
class Sample1StrImpl implements Sample1If<String>
范型方法:
public
以上的方法是没有返回值的。
返回值也可以是一个范型类的实例
public
也可对上面范型T进行限制,
public
public
范型数组:
public
public
基本上我对范型的理解就是上面的。
再来看看上图。
eUpperBound是所谓的上界, 即 ? extends T
eLowerBound是所谓的下界, 即 ? supper T
eTypeArguments是多参数的范型,例如class Sample2
这个范型类需要两个参数,eTypeArguments就用来干这个的。
EOperation就是方法,所以他有n个范型参数,就ETypeParameter,
ETypeParameter就是范型参数。每个ETypeParameter可以有n个
eGenericType,通过eBounds来指定。而每个eGenericType也可以指定属于那个ETypeParameter,即通过eTypeParameter来指定。
一个EClass可以继承一个范型,ECLass是通过eGenericSuperTypes得到的。
而一个范型可以通过eRawType指定EClassifier。
当然方法也可以抛出是属于范型的异常实例的。
可以通过eGenericExceptions取得所有的范型异常。