我看<JAVA实例技术手册>有一些问题不懂,想请教一下
1.
    // This sorted set stores the tasks that this Timer is responsible for.
    // It uses a comparator to sort the tasks by scheduled execution time.
    SortedSet tasks = new TreeSet(new Comparator() {
    public int compare(Object a, Object b) {
return (int)(((TimerTask)a).nextTime-((TimerTask)b).nextTime);
    }
    public boolean equals(Object o) { return this == o; }
});
我知道整个是一个语句,但是不理解,能不能解释一下从(new Comparator() ......到末尾的意思,第一次见这样写的;
2.
public void y(String str)
{
if(str instanceof String)
y((String)str);
}
书上说这个是不必要的类型转换,但是我不理解if(str instanceof String)这句,感觉语法怎么这么怪
另外instanceof这个关键词是做什么用的?
3.
另外我下了j2sdk1_3_1-win.exe,环境变量也设了,随便写一个小程序怎么都抱错,错误提示如下;
Exception in thead "main" java.lang.NoClassDefFoundError:c66
其中c66是文件名,很奇怪,莫非是我的jsdk版本太老了?

解决方案 »

  1.   

    参考匿名类,instanceof关键字,环境变量
      

  2.   

    1.是实现了一个匿名类,
    该类实现了Comparator接口,{}内是类实现的Comparator接口的方法,2.instanceof是一个关键字,
    测试str是否是一个String的实例对象,是str instanceof String表达式为真,否为假。3.你最好下个最新版的JDK吧,现在都有1.5了,
    再JDK1.3中需要设置path,classpath环境变量,
    classpath变量需要包含JDK库的路径,以及你自己的类文件的路径
      

  3.   

    我已经下了一个JDK1.5了,但是问题仍然存在
    开始我还以为是机子上的.net framework引起冲突,但是我把它卸了,问题仍然在.
    我觉得可能是CLASSPATH 问题,因为我javac的时候没错,而java时候就出现上面的错误
    可是我仍然是照着书上的写,问题仍然存在,我在看看
      

  4.   

    问题解决
    是classpath的设置问题,散分
      

  5.   

    可是为什么删除了classpath才可以正确,不删除classpath就会得"Exception in thead "main" java.lang.NoClassDefFoundError:c66"这个错误,不解!
      

  6.   

    那是因为你自己写得classpath可能不完整,没有包括所有的执行该类文件所需的类,
    一般来说自己写得classpath需要包括JDK的dt.jar,tools.jar以及你自己的库文件,和当前目录。目录之间使用分号间隔。
    例如:
    如果你得JDK安装在C:\Java那么classpath可以是:
    C:\Java\lib\dt.jar;C:\Java\lib\tools.jar;.;
    .;表示当前工作目录,