黑马程序员技术交流社区
标题:
方法的参数为什么要使用final 修饰呢? 为什么不用final...
[打印本页]
作者:
jinhu358
时间:
2013-5-6 00:43
标题:
方法的参数为什么要使用final 修饰呢? 为什么不用final...
本帖最后由 jinhu358 于 2013-5-9 15:53 编辑
方法的参数为什么要使用final 修饰呢? 为什么不用final就报错了?
private static Object getProxy(final Object target,final Advice advice) {
Object proxy3 = Proxy.newProxyInstance(
target.getClass().getClassLoader(),
/*new Class[]{Collection.class},*/
target.getClass().getInterfaces(),
new InvocationHandler(){
public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {
advice.beforeMethod(method);
Object retVal = method.invoke(target, args);
advice.afterMethod(method);
return retVal;
}
}
);
return proxy3;
}
2013-05-06_003848.png
(69.54 KB, 下载次数: 0)
下载附件
2013-5-6 00:38 上传
作者:
黑马伍哲沂
时间:
2013-5-6 07:23
还没学到那来,顶帖后默默飘走。
作者:
ZhaoYuBetter
时间:
2013-5-9 10:09
因为你这里用到里 匿名内部类,因为局部变量的范围在该方法内,当一个方法结束时,局部变量消失。
但定义在这个类中的内部类对象仍然是存在的,即内部类对象不能使用局部变量了。final定义的局部变量是个常量,它的生命周期超出方法运行的生命周期。
作者:
袁杰
时间:
2013-5-9 11:55
因为在这个方法中,传进来的参数相当于方法的局部变量,而在后面的匿名内部类中用到了,这个参数,想要在内部类中用局部变量,该局部变量必须是final修饰的。
作者:
Miss小强
时间:
2013-5-9 12:19
只要记住一句话:内部类访问局部变量,该变量必须是final型的,如果想深究的话,有一个博客
去看下吧:http://rongqiang1992.blog.163.com/blog/static/21727620920133270335138/
里面讲清楚了来龙去脉,不过有点难懂。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2