java炒冷饭系列14 内部类标识符
来源:互联网 发布:买火车票的软件 编辑:程序博客网 时间:2024/05/21 14:56
前言
由于每个类都会产生一个.class文件,其中包含了如何创建该类型的对象的全部信息(此信息产生一个”meta-class”,叫做Class对象),你可能猜到了,内部类也必须生成一个.class文件以包含它们的Class对象信息。这些类文件的命名有严格的规则:外围类的名字,加上“$”,再加上内部类的名字。
举列
如下面的Out.java文件经过编译后 会得到Out.class Out$Inner1.class Out$Inner2.class Out$Inner3.class
这几个文件
public class Out{ public class Inner1{ } public class Inner2{ } public static class Inner3{ }}
如果是局部内部类的话,编译器会在”$”加上数字编号Find.class LocalClass$1FindImpl.class LocalClass$2FindImpl.class LocalClass.class
为了防止同一个类中,局部类重复
interface Find{}public class LocalClass{ public void method(){ class FindImpl implements Find{ } } public void method2(){ class FindImpl implements Find{ } }}
如果是匿名内部类,编译器会简单地产一个数字作为其标识符AClass$1.class AClass$2.class AClass.class Find.class
。
interface Find{}public class AClass{ public void method(){ new Find(){ }; } public void method2(){ new Find(){ }; }}
如果内部类是嵌套在别的内部类之中,只需直接将它们的名字加在其外围类标识符与“$”的后面 Mulit.class Mulit$One.class Mulit$One$Two.class Mulit$One$Two$Three.class
public class Mulit{ public class One{ public class Two{ public class Three{ } } }}
总结
虽然这种命名格式简单而直接,但它还是很健壮的,足以应对绝大多数情况。因为这是Java标准命令命名方式,所以生产的文件自动都是平台无关的。(注意,为了保证你的内部类能起作用,Java编译器会尽可能地转换它们)
参考文献
《Java编程思想》10.12内部类标识符
- java炒冷饭系列14 内部类标识符
- java炒冷饭系列12 嵌套类(静态内部类)
- java炒冷饭系列13 内部类的继承
- java炒冷饭系列11 方法和作用域内的内部类 与 匿名内部类
- java炒冷饭系列09 内部类的创建和链接到外部类
- java炒冷饭系列10 内部类 使用.this与.new和向上转型
- java炒冷饭系列07 java标准异常
- java炒冷饭系列01 方法的重载
- java炒冷饭系列02 方法的重写
- java炒冷饭系列03 接口修饰符
- java炒冷饭系列06 异常匹配
- java炒冷饭系列06 异常说明(throws)
- java炒冷饭系列08 try-with-resources
- java炒冷饮系列14 局部内部类
- java夯实基础系列:内部类
- java炒冷饭系列04 初始化及类的加载
- C++程序员学Java系列之二四:内部类及匿名内部类概念
- 《java编程思想系列之7》 内部类
- 间接寻址与寄存器寻址,基址寻址与变址寻址
- 自动代码移植:从Caffe到Tensorflow
- 51Nod-1398-等公交
- Google的地理信息反向编码结果中的字段说明
- Spring Cloud 学习笔记(2)——Netflix
- java炒冷饭系列14 内部类标识符
- Tensorflow安装 & 遇到的问题及解决方案
- USB转RS485代替PC/PPI通讯电缆
- 用Veritas制作MSI文件,Active Directory系列之二十四
- 堆
- WEBBASIC Unit03 CSS声明-2
- 安装Kubernetes-Dashboard插件
- 图像处理双边滤波器
- 经典的Hash算法的实现