匿名の内部クラス、メンバークラス、ローカルクラス
今日コードを見て、いくつかの概念を見ます:内部クラス、ローカルクラス、メンバークラス、静的メンバークラス、匿名の内部クラス;一瞬ぼんやりした感じがした.次の例で説明します.
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("---------------------------------------");
}
}
}