public Object makeInner(final int finalLocalVar)
你看看你的这一行,能不提示要你定义成final,final就是不能更改的。不知道作用写这做什么,是抄别人的代码吗?
你看看你的这一行,能不提示要你定义成final,final就是不能更改的。不知道作用写这做什么,是抄别人的代码吗?
解决方案 »
- 线程运行出现的不确定性
- 日期相加 问题
- 代码 评估??? 汗死
- 为什么我向.txt文件写数据时,最后字符后面总是空一个和有一个小黑方框?
- 刚那个问题再写出来~~
- socket传送图象问题
- [110分]求javascript实现的类似java.net.URLEncoder.encode(String s) 的方法
- 鼠标在图片上移动,在图片旁边的文本框显示鼠标的坐标,急,高分奉送!
- 求救:高手过来看看100分
- 请问怎么用BufferedOutputStream中的write方法往XML文件中写入UTF-8编码字符串?(编码问题)
- 绝对 难题!!
- 在import gjt.*的时候报错说找不到gjt包,我装了最新的jdk,为什么呢?
sorry,我真的不太懂!
还有,是不是在内部类中访问外部类函数中的局部变量时,一定要把该变量定义为 final
方法makeInner的返回值是Object类的,因此函数方法必须返回一个类型。如果没有return new Inner();那就没有返回类型,Object就得换为Void,但那样你就不能在主函数里这样定义了Object obj=outer.makeInner(56);因为outer.makeInner(56);没有返回值。
final int x = 10; //<----1 return new A() {
public void a() {
x++;
}
};
} //<----2
}class Test {
void test() {
Outer out = new Outer();
A outA = out.returnAMethod(); //<---3 = (1~2)
outA.a(); //4
}
}在4标记出来的地方,returnAMehtod中的x变量仍然需要被使用到,而如果不加final关键字,那么它作为一个普通的局部变量,其生命周期只在1和2之间,也就是Test中的3。因此,在内部类中使用到的局部变量以及方法的参数都应被声明为final。而作为外部类的成员变量而言,其生命周期是延续的,并不会因为某个方法的调用结束而终结,因此不必声明为final