如果两个接口需要实现具有相同名称的方法,则方法()被调用两次。 我需要为2个不同的接口实现2个方法,如何实现它们来做不同的事情呢?
public class MainClass implements BarObj.BarInt, FooObj.FooInt{
MainClass(){
}
void trigger()
{
new BarObj(this);
new FooObj(this);
}
@Override
public void method() {
System.out.println("I DONT KNOW WHICH METHOD");
}
public static void main(String[] args) {
new MainClass().trigger();
}
}
public class BarObj {
interface BarInt
{
void method();
}
public BarObj(BarInt _barInt)
{
_barInt.method();
}
}
public class FooObj {
interface FooInt
{
public void method();
}
public FooObj(FooInt _fooInt)
{
_fooInt.method();
}
}
答案 0 :(得分:1)
你不能
但是要解决你的问题,你可以做下一步。
implements BarObj.BarInt, FooObj.FooInt
method
方法trigger
方法看起来应该是这样的
void trigger()
{
new BarObj(new BarObj.BarInt(){
@Override
public void method() {
System.out.println("NOW I DO KNOW WHICH METHOD");
System.out.println("I'm bar");
}
});
new FooObj(new FooObj.FooInt(){
@Override
public void method() {
System.out.println("NOW I DO KNOW WHICH METHOD");
System.out.println("I'm foo");
}
});
}
它使用匿名类,您可以谷歌获取更多详细信息。
答案 1 :(得分:0)
一个类中不能有两个具有相同名称和相同参数类型和长度的方法。当您实现具有相同名称的方法的两个接口时,您需要将实现仅提供给两个接口实现的一个方法,因为接口中的方法是空的并且永远不会被执行。将要执行的是从接口覆盖的类方法。