2011-11-25 65 views
-1

可变数目我在接口中定义的方法:覆盖方法用的参数

public Object g(String inter,String src,Object...params); 

我正在一个错误与在实现类的方法的定义@Override批注:

public Object g(String inter,String src,Object...params) {} 

解决的问题:问题是由清洁工程解决,可能是由Scala的IDE导致

+0

什么是错误? – Mark

+0

它应该可以正常工作,但你必须添加'return someObject'。 – BalusC

+0

你在编译java6 +吗? – bestsss

回答

1

你还没说其中错误你得到,但它应该工作正常其他比你目前还没有指定一个返回值:

interface Foo { 
    Object g(String inter, String src, Object...params); 
} 

class FooImpl implements Foo { 
    @Override 
    public Object g(String inter, String src, Object...params) { 
     return null; 
    } 
} 
0

试试这个:

public interface testi { 
    public Object g(String inter,String src,Object...params); 
} 

public class Test implements testi { 
@Override 
    public Object g(String inter,String src,Object...params) { 
     Object o = new Object(); 
     return o; 
    } 

    public static void main(String... args) { 
    } 
} 
0

我敢打赌,你使用的是Java 5编译器。只有在Java 6之后,@Override才能用于覆盖接口方法的方法。在Java5中,它只允许用于覆盖超类方法的方法。

0

正如Jon Skeet所说,除了缺乏返回值之外,您的代码应该是正确的。但值得一提的是,在版本6之前的java在实现接口中定义的方法时并未识别@Override注释。如果你使用的是旧版本,那可能会导致你的问题。