gpt4 book ai didi

java - Java 类中的多个接口(interface) - 哪个用于方法调用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:29:27 27 4
gpt4 key购买 nike

如果我有一个实现两个接口(interface)的类,并且我将该类发送给接受任一接口(interface)的重载方法;将调用该方法的哪个变体?

换句话说,如果我有这样的东西:

interface A {}
interface B {}

class C implements A, B { }

class D
{
public static void doThings(A thing){ System.out.println("handling A");}
public static void doThings(B thing){ System.out.println("handling B");}

public static void main(String[] args) {
doThings(new C());
}
}

然后我将我的类 C 发送到 D 中的方法:

doThings(C);

应该调用哪个方法? Java 标准是否涵盖了这一点?

最佳答案

你会得到一个编译器错误,因为有多个方法匹配,即 doThings 方法。

JLS 在 Section 15.12.2.5 中涵盖了这一点.它涵盖了如何解决哪个方法适用于调用方法的表达式。

Otherwise, we say that the method invocation is ambiguous, and a compile-time error occurs.

这发生在发现多个匹配的方法之后,一个方法并不比另一个更“具体”,并且没有一个是抽象的

关于java - Java 类中的多个接口(interface) - 哪个用于方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22675604/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com