gpt4 book ai didi

java - 无法从泛型方法返回对象

转载 作者:行者123 更新时间:2023-11-29 09:51:46 25 4
gpt4 key购买 nike

我不明白为什么下面的代码不能编译。我已经声明了扩展 Customer 的泛型类型 TCustomerCustomer 类型,那么为什么我不能在没有转换的情况下从此方法返回 Customer 对象?

public class CustomerExample {

public <T extends Customer> T processCustomer(Customer customer) {
return new Customer();
}
}

class Customer {

}

我得到 java: incompatible types: Customer cannot be converted to T

最佳答案

您需要显式转换:

public <T extends Customer> T processCustomer(Customer customer) {
return (T) new Customer();
}

当然,您需要了解运行时的这种类型转换,因为您不能这样做:

class Client extends Customer {
}

有了这个,下面的调用将在运行时失败并出现类转换异常:

Client client = new CustomerExample().processCustomer(new Client());

那是因为运行时类不匹配。这只是意味着您对 processCustomer 的实现必须有效地通用(无论如何都不能绑定(bind)到一种静态类型)

关于java - 无法从泛型方法返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49994563/

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