class Test{
interface A{
int getInt();
}
A make(final int i){ //为什么这里的final不能去掉??
class InnerTest implements A{
public int getInt(){
return i;
}
}
return new InnerTest();
}
}如果把final去掉的话,就会出错,提示说
“不能引用另一方法中定义的内部类中非终态变量 i”
为什么参数一定要是final类型的呢?
interface A{
int getInt();
}
A make(final int i){ //为什么这里的final不能去掉??
class InnerTest implements A{
public int getInt(){
return i;
}
}
return new InnerTest();
}
}如果把final去掉的话,就会出错,提示说
“不能引用另一方法中定义的内部类中非终态变量 i”
为什么参数一定要是final类型的呢?
class Test {
interface A {
int getInt();
} A make(final int i) { // 要想在局部内部类中被访问就必须声明为final
class InnerTest implements A { //局部内部类能访问外部类成员和本方法的final局部变量
public int getInt() {
return i;
}
}
return new InnerTest();
}
}
class f {
private int j=1;
interface A {
int getInt();
} A make(final int i) {
class InnerTest implements A {
public int getInt() {
System.out.println(j);
return i;
}
}
return new InnerTest();
}
public static void main(String[] args){
f ff=new f();
A a=ff.make(2);
a.getInt();
}
}