上篇博客中,android的源码调用了isMemberClass()方法,不知道这个方法有什么作用,查了一下api,竟然还能判断类的类型
不错挺好玩的,于是google了一下,借了别人博客的一个小例子来区分什么是:局部类,成员类,匿名类。
public class ClassTest{
public static void main(String[] args) {
ClassTest son = new ClassTest();
//测试匿名类
son.testAnonymous(new AnonymousClass() {
@Override
public void test() {
System.out.println("1 -> " + this.getClass().isMemberClass());
System.out.println("1 -> " + this.getClass().isAnonymousClass());
System.out.println("1 -> " + this.getClass().isLocalClass());
System.out.println("---------------------------------------");
}
});
//测试成员类
son.testMember();
//测试局部类
class LocalClass{
public LocalClass(){
System.out.println("3 -> " + this.getClass().isMemberClass());
System.out.println("3 -> " + this.getClass().isAnonymousClass());
System.out.println("3 -> " + this.getClass().isLocalClass());
System.out.println("---------------------------------------");
}
}
new LocalClass();
}
private void testAnonymous(AnonymousClass inner) {
inner.test();
}
private void testMember() {
new MemberClass();
}
/**
* 接口,用于测试内部类
*
*/
interface AnonymousClass{
public void test();
}
/**
* 成员类
*
*/
class MemberClass{
public MemberClass() {
System.out.println("2 -> " + this.getClass().isMemberClass());//成员类 也就是内部类,即在类的内部。
System.out.println("2 -> " + this.getClass().isAnonymousClass());//匿名类
System.out.println("2 -> " + this.getClass().isLocalClass());//局部类,即在方法内部
System.out.println("---------------------------------------");
}
}
}
运行结果: