下载此文档

关于Java内部类-Java开发Java经验技巧.docx


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
关于Java内部类-Java开发Java经验技巧.docx关于Java内部类-编程开发技术关于Java内部类木文由ImportNew・陈秋林翻译自javacodegeekso欢迎加入翻译小组。转载请见文末要求。J2V3中可以定义成员内部类(在另一个类里面定义的类),局部内部类(在语句块屮定义的类)和匿名内部类(没冇名字的类):classOuter{Objectanonymous二newObject(){};//这是一个匿名类//匿名初始化{//这是一个Local类classLocal{}Local1=newLocal();}Outer(){//这是构造函数中的Local类classLocal{}Local1=newLocal();}voidmethod(){//这是方法中的Local类classLocal{}Local1=newLocal();}//这是一个成员类classInner{}Inneri二newInner();}Java语言规范将成员类,木地类和匿名类统称为内部类。实现“细节”Java语言规范和虚拟机规范并没有告诉我们内部类的实现细节。这里的一些文章阐明了一些细节,比如Java编译器如何生成合成方法,可以使这些成员类访问(外部类的)私有成员,这在JVM中本来是是不允许的。很容易知道内部类的另一个实现细节:内部类的构造函数需耍额外的合成参数。内部类构造函数第一个合成参数就是普遍知道的内部类的外围实例(的引用),它存储在this$O?的合成域小。?这是适用于三种内部类:成员,本地和匿名。但鲜为人知的是,局部内部类需要通过额外的合成构造参数来获取非常量变量,(获取常量将被内联,并不会产生额外的合成构造函数参数):classOuter{voidmethod(){finalStringconstant二〃foo〃;finalStringnonConstant=,zfoo,();classLocal{/*syntheticfieldsandconstruetor:*Outerthis$0;StringnonConstant;*Local(Outerthis$0,StringnonConstant){$0二this$0;;}*/}Local1二newLocal();}好吧,但是我为什么要关心它?在大多数情况下,你并不关心内部类的实现机制,除非好奇心使然。但是如果你在内部类中使用了反射,这里有些东西你需要清楚,而且我并没冇听过或者在网上看过这类资料,所以我想很有必要列出清单帮助其他人弄清楚,因为通过Java反射的API,不同的编译器会产生不同的结果。现在的问题是,,,尤其是使用那些允许你访问参数类型(pre-generics:getParameterTypes()),泛型参数类型(post-gcncries:?cricParamctcrTypcs())和注释(getParameterAnnotations())?答案是:这取决于不同的编译器。假设有一个类:classOuter{classInner{Inner(){}Inner(Stringparam){}Inner(©DeprecatedInt

关于Java内部类-Java开发Java经验技巧 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人ttteee8
  • 文件大小63 KB
  • 时间2019-04-28