一直提示:Exception in thread "main" java.lang.Error: Unresolved compilation problem:
No enclosing instance of type InnerDemo is accessible. Must qualify the allocation with an enclosing instance of type InnerDemo (e.g. x.new A() where x is an instance of InnerDemo).
作者: 乔青山 时间: 2014-2-14 14:16
你是怎么编译通过的呢。。。
Outer out = new Outer();
这一行中Outer是内部类,
所以你要么就InnerDemo.Outer out = new InnerDemo().new Outer();来实例化
要么就把Outer类定义成静态类。
不可能编译通过吧作者: 奋斗的小胖子 时间: 2014-2-14 16:37 本帖最后由 奋斗的小胖子 于 2014-2-14 16:39 编辑
第一,你应该把类放在主函数的外面,第二命名不能放public 我帮你改了
<p>package IOstart;</p><p>
public class TestDemo {
</p><p> /**
* 需求:内部类访问规则,局部内部类,匿名内部类,演示
* 思路:在外部类中定义一个局部内部类
*
* 1因为此内部类在局部位置,是局部内部类,
* 在其他外部类无法直接创建对象,
* 因此必须在此处创建一个内部类对象并实现其功能
* new Inner().function();
* 2 变量a是局部变量,内部类若要调用必须将其用final修饰,成为常量
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Outer1 out = new Outer1();
out.method(7);//调用一次后结束时此方法所开辟的存储空间释放,
out.method(8);//因此可以在下次调用时再给常量a赋值,
}
}</p><p>class Outer1
{
Outer1(){}
int x=3;</p><p>
public void method(final int a){</p><p>
class Inner{</p><p> void function(){</p><p> sop(x);</p><p> sop(a);</p><p> }</p><p> }</p><p> new Inner().function();</p><p> }</p><p> public void sop(Object obj){</p><p>