Chinaunix首页 | 论坛 | 博客
  • 博客访问: 647535
  • 博文数量: 155
  • 博客积分: 5688
  • 博客等级: 大校
  • 技术积分: 2134
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-15 15:12
文章分类

全部博文(155)

文章存档

2011年(58)

2010年(97)

分类: Java

2011-02-18 19:33:12

声明:本文为原创
#####请转贴时保留以下内容######
作者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取得所有的范型异常。

 

 
 
 
阅读(2489) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~