java 内部类、文件类
最近写代码时,遇到了一些类使用错误的问题,重新研究了下java的各种类,发现细节还是很多的。
在java中主要有两种类类型:文件类、内部类。
一、文件类(也叫外部类)
类名和.java
文件同名的类
// A.java |
二、内部类(嵌套类)
内部类包括: 成员类、局部类、匿名类。
2.1 局部类
可使用isLocalClass()
来判断是否是局部类。
a、在构造方法中定义或在方法块中定义的类。
b、只能被当前方法块中创建
c、无法被static 关键字修饰
如下面代码中的H、J类
// A.java |
2.2 成员类
可使用isMemberClass()
判断是否是成员类。
a、在文件类中定义
b、不属于局部类的类
c、只能被其所在java文件中的所有非静态类创建,而不能被其它java文件中的类创建
如下面代码中的B类
// A.java |
关于c点的代码例子:
// A.class |
2.3 静态的成员类
可使用isMemberClass()
判断是否是成员类。
a、使用static修饰的成员类
静态的成员类可以被内部类创建,也可以被其它java文件中的类创建,使用public
静态成员类可以有效内存泄漏的情况
,如果是private吓死的静态成员类是无法规避内存泄漏的风险的。
// A.java |
2.4 匿名类
可使用isAnonymousClass()
判断是否是匿名类。
a、没有类名的局部类或局部类
b、无法被static、final等关键字修饰
//A.java |