gpt4 book ai didi

java - 如何在java中实现泛型方法

转载 作者:行者123 更新时间:2023-12-01 13:47:07 27 4
gpt4 key购买 nike

我需要重写这个方法:

   @Override
public <T> T convertValue(Object object, Class<T> clazz)

问题是我不知道为什么。我不明白什么是<T> 。我尝试重写它并用 String 类替换 T:

   public <String> String convertValue(Object object, Class<String> clazz){
return "a";
}

但这给了我错误:

Type mismatch: cannot convert from java.lang.String to String

所以现在我真的很困惑。有人可以向我解释一下这一点并展示一些如何返回某些值的示例吗?

最佳答案

T是一个类型参数。它是类型的“占位符”。

您收到的错误是因为您隐藏(“隐藏”)String 输入您的 String 类型参数。您需要删除类型参数才能正确解析类型。

另外,请注意,即使如此,您也无法重写该方法,因为

    @Override
public String convertValue(Object object, Class<String> clazz){
return "a";
}

具有与 A.convertValue() 不兼容的类型签名.

这是因为,简单来说,Java 要求您应该能够使用 B.convertValue() 的重写实现。任何可以使用 A.convertValue() 的地方没有编译错误。因此,您应该保留类型参数,正如 JB Nizet 正确建议的那样。

最后,强烈怀疑你可能不明白这个方法convertValue是什么意思。是关于。再次阅读 JB Nizet 的回答,因为他提供了直观的解释,并且一定要阅读基本的 generics .

关于java - 如何在java中实现泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20282548/

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