黑马程序员技术交流社区

标题: 这个交通灯管理系统的一点疑问 [打印本页]

作者: 杨朔    时间: 2012-7-6 15:33
标题: 这个交通灯管理系统的一点疑问
这里面的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);
        }
作者: 闾丘日月    时间: 2012-7-6 16:33
内部类的语法。
内部类要引用外部类的成员,必须加上外部类的类名.this.成员
或者直接写成员
作者: 杨朔    时间: 2012-7-6 16:34
闾丘日月 发表于 2012-7-6 16:33
内部类的语法。
内部类要引用外部类的成员,必须加上外部类的类名.this.成员
或者直接写成员 ...

我不明白的是为什么可以加入这个参数,他不是要接受Lamp实例么
作者: 闾丘日月    时间: 2012-7-6 16:48
杨朔 发表于 2012-7-6 16:34
我不明白的是为什么可以加入这个参数,他不是要接受Lamp实例么

你把张老师的代码都贴出来吧,我忘记他代码怎么写的了。
作者: 杨朔    时间: 2012-7-6 16:49
闾丘日月 发表于 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:50
杨朔 发表于 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:56
杨朔 发表于 2012-7-6 16:49
private String name=null;

        public Road(String name) {

你是查的api没有valueOf的重载函数
实际上valueOf是有个Stirng为参数的重载函数的
在eclipse下通过代码提示可以看出来,那份api稍微有点bug而已
作者: 杨朔    时间: 2012-7-6 17:25
闾丘日月 发表于 2012-7-6 16:56
你是查的api没有valueOf的重载函数
实际上valueOf是有个Stirng为参数的重载函数的
在eclipse下通过代码提 ...

哦,谢谢了
           




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