黑马程序员技术交流社区

标题: 紧急求教,关于线程使用final修饰类 [打印本页]

作者: 朙兲    时间: 2015-7-3 22:22
标题: 紧急求教,关于线程使用final修饰类
如题,是不是要在线程中使用类必须是final修饰呢?
如下变代码
  1. public class TroditionalThreadCom {
  2.         public static void main(String[] args) {
  3.                 final Busness bus = new Busness();
  4.                 new Thread(new Runnable() {
  5.                        
  6.                         @Override
  7.                         public void run() {
  8.                                 for(int i = 1;i<50;i++){
  9.                                         bus.sub();
  10.                                        
  11.                                 }
  12.                                
  13.                         }
  14.                 }).start();
  15.         }
  16. }
复制代码
如果Busness 类不使用final修饰,就会报错,我试了其他非final的类也都报错,不知道是不是凑巧,还是有什么说法,求带,求大神指导

作者: dajiaoya    时间: 2015-7-4 11:32
,谢谢分享
作者: 825176857    时间: 2015-7-4 11:43
不是的,当然不是啦。
作者: zhangshuai_123    时间: 2015-7-4 14:44
因为内部类访问到了方法所以要用final修饰
作者: YQC2015    时间: 2015-7-4 15:33
测试没有问题啊,要不你把Busness类的代码贴出来瞅瞅。还有分析错误要看错误类型,不要凭感觉去猜测
作者: 朙兲    时间: 2015-7-4 22:54
zhangshuai_123 发表于 2015-7-4 14:44
因为内部类访问到了方法所以要用final修饰

没有内部类呀,哪个属于内部类呢,Busness是定义在外边的
作者: 朙兲    时间: 2015-7-4 22:56
YQC2015 发表于 2015-7-4 15:33
测试没有问题啊,要不你把Busness类的代码贴出来瞅瞅。还有分析错误要看错误类型,不要凭感觉去猜测 ...

Busness是在外边的,但是还得得用final来修饰,而且,我做了很多实验了,线程内的类不用final修饰就报错
作者: very爱    时间: 2015-7-4 23:58
匿名内部类
作者: 朙兲    时间: 2015-7-5 11:46
very爱 发表于 2015-7-4 23:58
匿名内部类

谢谢哈,一语惊醒,明白了。。。
方法内部类对象不能访问该内部类所在方法的非final局部变量




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2