如果两个接口(interface)需要实现同名的方法,则method()会被调用两次。 我需要为 2 个不同的接口(interface)实现 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();
}
}
最佳答案
你不能
但是要解决您的问题,您可以执行下一步。
- 删除
实现 BarObj.BarInt、FooObj.FooInt
- 删除
方法
方法 - 更改
触发
方法
它应该看起来像这样
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");
}
});
}
它使用匿名类,您可以通过谷歌搜索了解更多详细信息。
关于java - 两个接口(interface)需要实现同名方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45100587/