具有可变数量的参数的覆盖方法

时间:2011-11-25 20:11:28

标签: java

我在界面中定义了一个方法:

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

我对实现类中方法定义的@Override注释出错:

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

已解决:问题已通过清理项目解决,可能是由Scala IDE引起的

4 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分: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) {
    }
}

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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