如何实现两个具有相同名称和不同返回类型的方法?

时间:2012-05-20 09:38:54

标签: java interface return

我想知道是否可以实现这样的代码?

public interface A {
public void execute();
}

public interface B { 
    public String execute(); 
}

class C implements A, B {
}

2 个答案:

答案 0 :(得分:7)

没有。这是不允许的,因为编译器无法分辨您要使用的execute版本。

如果要重载方法,则需要改变方法参数,例如:

   public void execute();

   public String execute(int someParam);

答案 1 :(得分:2)

不,你不能。

JLS要求每个方法都有不同的签名:

  

JLS 8.4 - “类的主体使用覆盖等效签名(第8.4.2节)将两个方法声明为成员是一个编译时错误。”

其中8.4.2将覆盖等效签名指定为方法签名,这些签名在类型擦除后具有相同的方法名称和相同的参数类型。