Java 参数数目可变的重写方法

Java 参数数目可变的重写方法,java,Java,我在接口中定义了一个方法: public Object g(String inter,String src,Object...params); 我在实现类中方法定义的@Override注释中遇到错误: public Object g(String inter,String src,Object...params) {} 已解决:该问题通过清理项目解决,可能是由Scala IDE引起的。您尚未说明将出现哪个错误,但除了当前未指定返回值外,它应该可以正常工作: interface Foo {

我在接口中定义了一个方法:

public Object g(String inter,String src,Object...params);
我在实现类中方法定义的@Override注释中遇到错误:

public Object g(String inter,String src,Object...params) {}
已解决:该问题通过清理项目解决,可能是由Scala IDE引起的。您尚未说明将出现哪个错误,但除了当前未指定返回值外,它应该可以正常工作:

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;
    }
}
试试这个:

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) {
    }
}

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

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

它应该可以正常工作,但您必须添加
返回someObject
。您是否为java6+编译?@BalusC,接口重写在java5中不可用。不要为接口使用@Override。。。你没有凌驾于任何事情之上,只是实现了。是的,我确定。它可用于自Java6以来实现接口方法的方法。JBuilder仍然存在吗?