gpt4 book ai didi

java - 方法重载时复制方法

转载 作者:搜寻专家 更新时间:2023-10-31 20:03:44 26 4
gpt4 key购买 nike

以下代码给出编译错误,错误为“Duplicate Method”

static int test(int i){
return 1;
}

static String test(int i){
return "abc";
}

这是意料之中的,因为两个重载方法具有相同的签名,只是返回类型不同。

但是下面的代码编译正常但有警告:

static int test1(List<Integer> l){
return 1;
}

static String test1(List<String> l){
return "abc";
}

因为,我们知道 Java 泛型在 Erasure 上工作,这意味着在字节码中,这两种方法具有完全相同的签名并且返回类型不同。

此外,令我惊讶的是,以下代码再次出现编译错误:

static int test1(List<Integer> l){
return 1;
}

static String test1(List l){
return "abc";
}

尽管有重复的方法,但第二个代码如何在不出现任何编译错误的情况下正常工作?

最佳答案

  1. 如果参数相同,Java 无法确定使用哪一个。因此,它会抛出重复方法错误。
  2. String
  3. ListIntegerList不能直接转换,所以方法不同。没有错误。
  4. Integer
  5. List 也可以用作任何内容的普通 List,因此如果提供,Java 无法确定使用哪一个IntegerList -> 重复方法错误。

关于java - 方法重载时复制方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16377949/

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