EMF--深入研究到骨子里--14

2546阅读 0评论2011-02-18 mtloveft
分类:Java

声明:本文为原创
#####请转贴时保留以下内容######
作者GTT
本文档归属http://oldtown.cublog.cn/.转载请注明出处!
请提出宝贵意见Mail:mtloveft@hotmail.com
提示本文是关于介绍EMF,即Eclipse modeling Framework
 
下面介绍EMF中的泛型
类图如下
 

EGenericType就是Java范型。C++对范型有很好的支持。

Java是从5.0版本之后开始支持范型的。

简单说说范型,然后对上图的理解就很容易了。

普通范型,类的定义:

class Sample1

class Sample2 V>

方法里对范型的应用:

通配符:

public void operation1(Sample1  smpl)

operation1方法将可以接收任何类型的Sample1

受限类型

public void operation2(Sample1 extends Number>  smpl)

operation2将只接收参数是继承于NumberSample1

public void operation3(Sample1 super Number>  smpl)

operation3将只接收参数是Number的超类的Sample1

范型接口:

interface Sample1If

interface Sample2If V>

实现类

class Sample1Impl implements Sample1If

class Sample2Impl<K, V> implements Sample2If<K, V>

实现类也可以实现范型的一个实例

class Sample1StrImpl  implements Sample1If<String>

范型方法:

public   void operation4(T t)

以上的方法是没有返回值的。

返回值也可以是一个范型类的实例

public Sample1 operation5(T t)

也可对上面范型T进行限制,

public extends Number> Sample1 operation6(T t)

public super Number> Sample1 operation7(T t)

范型数组:

public T[] operation8(T arg1, T arg2, T arg3)

public T[] operation9(T...args)

基本上我对范型的理解就是上面的。

 

 

再来看看上图。

eUpperBound是所谓的上界,   ?  extends T

eLowerBound是所谓的下界,   ?  supper T

eTypeArguments是多参数的范型,例如class Sample2 V>

这个范型类需要两个参数,eTypeArguments就用来干这个的。

EOperation就是方法,所以他有n个范型参数,ETypeParameter,

ETypeParameter就是范型参数。每个ETypeParameter可以有n

eGenericType,通过eBounds来指定。而每个eGenericType也可以指定属于那个ETypeParameter,即通过eTypeParameter来指定。

一个EClass可以继承一个范型,ECLass是通过eGenericSuperTypes得到的。

而一个范型可以通过eRawType指定EClassifier

当然方法也可以抛出是属于范型的异常实例的。

可以通过eGenericExceptions取得所有的范型异常。

 

 
 
 
上一篇:日本、頑張れ
下一篇:EMF--深入研究到骨子里--15