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仍然存在吗?