java成员内部类

java成员内部类依赖于外部类而存在,故创建内部类需要首先创建其关联的外部类。

public class Test {

	public static void main(String args[])  {

		Inner obj = new Inner();  // 报错,No enclosing instance of type Test is accessible. 
	}


	class Inner {

		String str;
		void say() {
			System.out.println("From Inner class");
		}
	}
}

改为

Test test = new Test();
Test.Inner obj = test.new Inner();

或将内部类改为静态内部类,静态内部类不依赖于外部类。

public class Test {

	public static void main(String args[])  {

		Inner obj = new Inner();
	}


	static class Inner {            // 静态内部类不依赖于外部类

		String str;
		void say() {
			System.out.println("From Inner class");
		}
	}
}

也可以在外部类中添加创建内部类的函数

public class Test {

	public static void main(String args[])  {

		Test.Inner obj = new Test().getInner();
	}


	class Inner {        

		String str;
		void say() {
			System.out.println("From Inner class");
		}
	}


	Inner getInner() {
		return new Inner();
	}
}

  

原文地址:https://www.cnblogs.com/deltadeblog/p/7989530.html