Oracle的IDE-Jdeveloper 竟然有如此搞笑的错误信息,而在Eclipse 命令行OK, 那位使用Jdveloper10的朋友解释一下!

Oracle的IDE-Jdeveloper 竟然有如此搞笑的错误信息,而在Eclipse 命令行OK, 那位使用Jdveloper10的朋友解释一下!

         Jdeveloper 竟然报这样的错误,而在Eclipse 及通过命令行可以执行成功,不知道为什么,那位朋友使用Jdeveloper 帮我看看,呵呵,指不定就是Jdevloper一个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 <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 报:
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 和命令行都能得到正确的结果 如下图:

  

      那位使用Jdeveloper的朋友解释一下原因? 我使用的是jdevstudio10132  JDK是Sun 1.5
  

你可能感兴趣的:(Oracle的IDE-Jdeveloper 竟然有如此搞笑的错误信息,而在Eclipse 命令行OK, 那位使用Jdveloper10的朋友解释一下!)