gpt4 book ai didi

java - 有没有一种方法可以在不进行强制转换的情况下解决不明确的方法调用?

转载 作者:行者123 更新时间:2023-12-01 20:15:58 25 4
gpt4 key购买 nike

初始问题

我有以下代码:

public static void main(String[] args) throws Exception {
test(new LinkedList());
}

public static void test(Queue qeueue){
System.out.println("Queue");
}

public static void test(List list){
System.out.println("List");
}

InteliJ 不允许我运行该项目。

  1. 有什么办法可以解决这个问题吗?
  2. 如果两者的特异性相同,JVM 将使用哪一个?是随机的吗?

我已阅读相关的 SO q/a,但没有人给出如何围绕它进行编译的答案。他们只是列出原因,例如Ambiguous method call intelliJ 15

更新

一个更令人讨厌的例子是:

test(null);

我一直在读一篇很有趣的文章:http://javabypatel.blogspot.be/2016/05/ambiguous-method-overloading.html

最佳答案

一个LinkedList,既是一个List,又是一个Deque,而后者又是一个Queue

因此,test 方法调用对于编译器来说是不明确的,因为无法确定要调用哪个重载。

要么合并方法以接受唯一的对象(例如Collection),要么显式转换为任一目标类型(或者完全具有不同的方法名称)。

还请记住:不鼓励使用原始类型,您可能想要参数化泛型集合。

关于java - 有没有一种方法可以在不进行强制转换的情况下解决不明确的方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45799302/

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