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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨朔 中级黑马   /  2012-7-6 15:33  /  1723 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这里面的Lapm.valueOf(Road.this.name).isLighted();中为什么可以在valueOf中加入road对象呢,Lamp不是获得的Lamp实例么。
  ScheduledExecutorService timer=Executors.newScheduledThreadPool(1);
                 timer.scheduleAtFixedRate(
                                 new Runnable(){               
                        public void run() {
                                if(vechicles.size()>0){
                                         Boolean lighted= Lamp.valueOf(Road.this.name).isLighted();//这个地方的不懂
                                         while(lighted){
                                                 System.out.println(vechicles.remove(0)+"is gone");
                                         }
                                 }
                               
                        }
                 },
                                 1,
                                 1,
                                 TimeUnit.SECONDS);
        }

7 个回复

倒序浏览
内部类的语法。
内部类要引用外部类的成员,必须加上外部类的类名.this.成员
或者直接写成员
回复 使用道具 举报
闾丘日月 发表于 2012-7-6 16:33
内部类的语法。
内部类要引用外部类的成员,必须加上外部类的类名.this.成员
或者直接写成员 ...

我不明白的是为什么可以加入这个参数,他不是要接受Lamp实例么
回复 使用道具 举报
杨朔 发表于 2012-7-6 16:34
我不明白的是为什么可以加入这个参数,他不是要接受Lamp实例么

你把张老师的代码都贴出来吧,我忘记他代码怎么写的了。
回复 使用道具 举报
闾丘日月 发表于 2012-7-6 16:48
你把张老师的代码都贴出来吧,我忘记他代码怎么写的了。

        private String name=null;

        public Road(String name) {
                this.name=name;
               
                ExecutorService pool=Executors.newSingleThreadExecutor();
                pool.execute(new Runnable(){
                        public void run(){
                                for(int i=0;i<1000;i++){
                                        try {
                                                Thread.sleep((new Random().nextInt(10)+1)*1000);
                                        } catch (InterruptedException e) {
                                                e.printStackTrace();
                                        }
                                        vechicles.add(Road.this.name+" "+i);
                                }
                        }
                });
ScheduledExecutorService timer=Executors.newScheduledThreadPool(1);
                 timer.scheduleAtFixedRate(
                                 new Runnable(){
public void run() {
                                if(vechicles.size()>0){
                                         Boolean lighted=Lamp.valueOf(Road.this.name).isLighted();
                                         while(lighted){
                                                 System.out.println(vechicles.remove(0)+"is gone");
                                         }
                                 }
                               
                        }
                 },
                                 1,
                                 1,
                                 TimeUnit.SECONDS);
        }
回复 使用道具 举报
杨朔 发表于 2012-7-6 16:49
private String name=null;

        public Road(String name) {

前面少了一点
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Road {
       
        private List<String> vechicles=new ArrayList<String>();
回复 使用道具 举报
杨朔 发表于 2012-7-6 16:49
private String name=null;

        public Road(String name) {

你是查的api没有valueOf的重载函数
实际上valueOf是有个Stirng为参数的重载函数的
在eclipse下通过代码提示可以看出来,那份api稍微有点bug而已
回复 使用道具 举报
闾丘日月 发表于 2012-7-6 16:56
你是查的api没有valueOf的重载函数
实际上valueOf是有个Stirng为参数的重载函数的
在eclipse下通过代码提 ...

哦,谢谢了
           
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马