gpt4 book ai didi

java - 重载方法 : both methods have same erasure

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

我有以下代码但它不起作用:出现错误 both methods have same erasure

public class Foo<V>  {
public static void main(String[] args) {
}

public void Bar(V value) {
}

public void Bar(Object value) {
}
}

我还有这个代码:

public class Foo<V>  {
public static void main(String[] args) {
}

public void Bar(B value) {
}

public void Bar(A value) {
}
}

class A {
}

class B extends A {
}

这行得通。在第一种情况下 VObject 的 child ,就像在第二种情况下 BA 的 child 一样>。那为什么第一种情况会出错,而第二种情况会编译成功呢?

编辑:我应该怎么做才能实现方法重载而不引发错误?

最佳答案

What should I do to achieve method overloading, without raising an error?

简单:不要尝试用具有相同删除的参数重载方法。

几个选项:

  1. 只需给方法不同的名称(即不要尝试使用重载)
  2. 向其中一个重载添加更多参数,以允许消除歧义(理想情况下,只有在您确实需要这些参数时才这样做;但是在 Java API 中有一些示例,其中存在垃圾参数只是为了避免重载问题)。
  3. 按照@Kayaman 的建议绑定(bind)类型变量:

    <V extends SomethingOtherThanObject>

关于java - 重载方法 : both methods have same erasure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43442515/

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