gpt4 book ai didi

java - java中的方法重载导致编译时错误

转载 作者:行者123 更新时间:2023-11-30 07:07:22 26 4
gpt4 key购买 nike

以下代码给出编译时错误,例如

“方法 print(List) 与 MethodOverLoadingGenericExample 类型中的另一个方法具有相同的删除 print(List)”

public static void main(String[] args) {

}

public void print(List<Employee> empList){
System.out.println(empList);
}

public void print(List<Address> empList){
System.out.println(empList);
}

class Employee {
private String name;

public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
}

class Address {
public int pincode;

public void setPincode(int pincode) {
this.pincode = pincode;
}
public int getPincode(){
return pincode;
}
}

最佳答案

在编译时检查泛型的类型正确性。然后,通用类型信息在称为类型删除的过程中被删除。例如,List 将转换为非泛型类型 List,该类型通常包含任意对象。编译时检查保证生成的代码类型正确。

由于类型删除,无法在运行时确定类型参数。例如,当在运行时检查 ArrayList 时,没有通用方法可以确定在类型删除之前它是 ArrayList 还是 ArrayList。许多人对此限制感到不满。[6]有部分方法。例如,可以检查单个元素以确定它们所属的类型;例如,如果 ArrayList 包含 Integer,则该 ArrayList 可能已使用 Integer 进行参数化(但是,它可能已使用 Integer 的任何父级进行参数化,例如 Number 或 Object)。

有关详细信息,请参阅 https://en.wikipedia.org/wiki/Generics_in_Java 处的类型删除问题部分

关于java - java中的方法重载导致编译时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39849986/

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