A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题,是不是要在线程中使用类必须是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的类也都报错,不知道是不是凑巧,还是有什么说法,求带,求大神指导

8 个回复

倒序浏览
,谢谢分享
回复 使用道具 举报
不是的,当然不是啦。
回复 使用道具 举报
因为内部类访问到了方法所以要用final修饰
回复 使用道具 举报 1 0
测试没有问题啊,要不你把Busness类的代码贴出来瞅瞅。还有分析错误要看错误类型,不要凭感觉去猜测
回复 使用道具 举报
zhangshuai_123 发表于 2015-7-4 14:44
因为内部类访问到了方法所以要用final修饰

没有内部类呀,哪个属于内部类呢,Busness是定义在外边的
回复 使用道具 举报
YQC2015 发表于 2015-7-4 15:33
测试没有问题啊,要不你把Busness类的代码贴出来瞅瞅。还有分析错误要看错误类型,不要凭感觉去猜测 ...

Busness是在外边的,但是还得得用final来修饰,而且,我做了很多实验了,线程内的类不用final修饰就报错
回复 使用道具 举报
匿名内部类
回复 使用道具 举报

谢谢哈,一语惊醒,明白了。。。
方法内部类对象不能访问该内部类所在方法的非final局部变量
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马