在方法中定义的内部类,只能访问方法中final 类型的局部变量,这是因为在方法中定义的局部变量相当于一个常量,他的声明周期超出方法运行的声明周期,
package com.java.charpt11;
interface Outlnterface{//接口一
public void f();
}
class OuterClass2{
private class innerClass implements Outlnterface{
//内部类的构造方法
public innerClass(String s) {
System.out.println(s);
}
@Override
public void f() {
System.out.println("访问内部类中的f()方法");
}
}
public Outlnterface doit()
{
return new innerClass("放问内部类构造方法");
}
}
interface OutLnterface2 //接口2
{
}
class OuterClass3{
public OutLnterface2 doit(final String x)//doit方法参数为final类型
{
class InnerClass2 implements OutLnterface2
{
public InnerClass2(String s) {
s=x;
System.out.println(s);
}
}
return new InnerClass2("doit");
}
}
class OuterClass4
{
public OutLnterface2 doit()
{
return new OutLnterface2(){//声明匿内部类
private int i=0;
public int getValue()
{
return i;
}
};
}
}
public class InterfaceInner {
public static void main(String[] args) {
OuterClass2 out=new OuterClass2();
Outlnterface outinner=out.doit();
outinner.f();
}
}
2.声明匿名累不累所有实现的代码都需要在大括号内编写,语法
return new A(){...
//内部类体};
原文:http://www.cnblogs.com/douyunqian3520/p/5516478.html