大家对出错的原因给出了解释,内部类的作用域使它无法直接被外部调用.
我通过在网上查资料,发现了一种用接口访问局部内部类的方法,下面是这个例子的改造后的代码,供和我一样的新手参考.
这个贴子将设置为"已解决".谢谢大家积极帮忙,版主的加分也是及时的鼓励,.
- //供局部内部类使用的接口
- interface MyInner
- {
- public abstract void show();
- }
- //外部类
- class Outer
- {
- //外部类成员函数
- public MyInner method()
- {
- //局部变量,生命周期短,加上final 保证变量的生命最长
- final int x = 2;
- //局部内部类,实现MyInner
- class Inner implements MyInner
- {
- public void show()
- {
- System.out.println("inner show"+x);
- }
- }
- //多态
- MyInner i = new Inner();
- //调用Outer的function()方法
- function(i);
- //返回i对象
- return i;
- }
- //Outer的function()方法
- public void function(MyInner i)
- {
- i.show();
- }
- }
- //程序入口
- class InnerClass3
- {
- public static void main(String[] args)
- {
- //定义外部类对象
- Outer o = new Outer();
- //调用内部类方法
- o.method().show();
- }
- }
- //结果:打印出两行inner show2
- //结论:通过接口实现了外部类和外部函数访问内部类
复制代码 |