新的起点 新的开始

快乐生活 !

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
  

posted on 2009-04-14 21:16 advincenting 阅读(1928) 评论(2)  编辑  收藏

评论

# re: Oracle的IDE-Jdeveloper 竟然有如此搞笑的错误信息,而在Eclipse 命令行OK, 那位使用Jdveloper10的朋友解释一下! 2009-04-14 22:15 逝水fox

建议说一下 你的48行和56行代码是什么
错误显示是这两行有问题 偏偏JD代码又只截图到30行 Eclipse楼主又不开行标 Blog的代码也没有行标

连错得到底是哪一行都不知道 是很难分析的咯  回复  更多评论   

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

代码拷贝过去试着运行一下么   回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

公告

Locations of visitors to this page

导航

<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

统计

常用链接

留言簿(13)

随笔分类(71)

随笔档案(179)

文章档案(13)

新闻分类

IT人的英语学习网站

JAVA站点

优秀个人博客链接

官网学习站点

生活工作站点

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜