Oracle的IDE-Jdeveloper 竟然有如此搞笑的錯(cuò)誤信息,而在Eclipse 命令行OK, 那位使用Jdveloper10的朋友解釋一下!
Jdeveloper 竟然報(bào)這樣的錯(cuò)誤,而在Eclipse 及通過(guò)命令行可以執(zhí)行成功,不知道為什么,那位朋友使用Jdeveloper 幫我看看,呵呵,指不定就是Jdevloper一個(gè)Bug。
這段代碼如下:
public class TreeClient {
public static <T> String toString(Tree<T> t){
return t.visit(new Tree.Visitor<T,String>(){
public String leaf(T e){
return e.toString();
}
public String branch(String l,String r){
return l.toString()+r.toString();
}
});
}
public static <N extends Number> Double sum(Tree<N> t){
return t.visit(new Tree.Visitor<N,Double>(){
public Double leaf(N e){
return e.doubleValue();
}
public Double branch(Double l,Double r){
return l+r;
}
});

}
public static void main(String[] args){
Tree<Integer> t =Tree.branch(Tree.branch(Tree.leaf(1),Tree.leaf(2)),Tree.leaf(3));
System.out.println(t.toString());
System.out.println(sum(t));
}
}
abstract class Tree<E> {

public interface Visitor<E,R>{
public R leaf(E elt);
public R branch(R left, R righ );
}

public abstract <R> R visit(Visitor<E,R> v);
public static <T> Tree<T> leaf(final T e){
return new Tree<T>(){


public <R> R visit(Visitor<T,R> v) {
return v.leaf(e);
}
};
}
public static <T> Tree<T> branch(final Tree<T> i,final Tree<T> r){
return new Tree<T>(){

public <R> R visit(Visitor<T,R> v) {
return v.branch(i.visit(v),r.visit(v));
}
};

}
}
Jdeveloper10 報(bào):
Error(48,30): method visit(citi.Tree.Visitor<T,R>) in anonymous class cannot override method visit(citi.Tree.Visitor<E,R>) in class citi.Tree with different return type, was
Error(56,30): method visit(citi.Tree.Visitor<T,R>) in anonymous class cannot override method visit(citi.Tree.Visitor<E,R>) in class citi.Tree with different return type, was
下圖所示:

而Eclipse 和命令行都能得到正確的結(jié)果 如下圖:

那位使用Jdeveloper的朋友解釋一下原因? 我使用的是jdevstudio10132 JDK是Sun 1.5
這段代碼如下:

























































Error(48,30): method visit(citi.Tree.Visitor<T,R>) in anonymous class cannot override method visit(citi.Tree.Visitor<E,R>) in class citi.Tree with different return type, was
Error(56,30): method visit(citi.Tree.Visitor<T,R>) in anonymous class cannot override method visit(citi.Tree.Visitor<E,R>) in class citi.Tree with different return type, was
下圖所示:
而Eclipse 和命令行都能得到正確的結(jié)果 如下圖:
那位使用Jdeveloper的朋友解釋一下原因? 我使用的是jdevstudio10132 JDK是Sun 1.5
posted on 2009-04-14 21:16 advincenting 閱讀(1933) 評(píng)論(2) 編輯 收藏