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类型的呢?
解决方案 »
- java入门级公开课
- 35选7的全彩多少钱?这个程序用java怎么编写!
- 南京的朋友们注意了,达内已于5月份登陆南京来骗人了~~~~
- 为什么有的panel能跟着窗口大小自动调整控件大小,有的则不可以?
- 如何得到本机的真实ip地址?
- 一段java 程序的解读,求解含义
- 关于java实现对zip解压的中文名无法支持的问题~~急~~
- JDBC连接sql server 2000问题!!
- 想找个java方面的实习或工作一定得会Ajax和SSh吗?在校也没怎么学这方面的内容啊,自己也还没看。是不是一定得会才行啊?
- 请帮我解释一下
- Exception in thread "main" java.lang.NullPointerException问题求助
- 谁来帮我讲解一下这道题~~~谢谢
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();
}
}