今天看代码,看到几个概念:内部类、局部类、成员类、静态成员类、匿名内部类;瞬间有种被搞糊涂了感觉。下面是一个小例子来对它们进行说明:
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(); //测试静态成员类 new StaticMemberClass(); //测试局部类 class LocalClass{ public LocalClass(){ System.out.println("4 -> " + this.getClass().isMemberClass()); System.out.println("4 -> " + this.getClass().isAnonymousClass()); System.out.println("4 -> " + this.getClass().isLocalClass()); System.out.println("---------------------------------------"); } } new LocalClass(); } private void testAnonymous(AnonymousClass inner) { inner.test(); } private void testMember() { new MemberClass(); } /** * 接口,用于测试内部类 * @author xinghzhang * */ interface AnonymousClass{ public void test(); } /** * 静态成员类 * @author xinghzhang * */ static class StaticMemberClass{ public StaticMemberClass() { System.out.println("3 -> " + this.getClass().isMemberClass()); System.out.println("3 -> " + this.getClass().isAnonymousClass()); System.out.println("3 -> " + this.getClass().isLocalClass()); System.out.println("---------------------------------------"); } } /** * 成员类 * @author xinghzhang * */ 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("---------------------------------------"); } } }
原文地址:http://blog.csdn.net/zhgxhuaa/article/details/36201703