为什么在 Java 中不允许使用不同的泛型类型作为参数进行重载?
例如,
private static String convertListToString(List<Character> list)
和
private static String convertListToString(List<String> list) {
导致错误。 为什么 Java 这样做,是否有任何安全且流行的解决方法?
相关
完全符合我的需要,但使用不同的语言 - Overloading a method that takes a generic list with different types as a parameter
最佳答案
当您使用相同的名称但更改参数时,就会发生重载方法。
我相信你很熟悉,例如:
void myMethod(int something){
// implementation
}
void myMethod(int something, String somethingElse){
// implementation
}
在你的情况下 List<String>
与 List<Character>
不是不同类型的参数.通用类定义为:
List<T>{
// class implementation, a list that manages objects of type 'T'
}
编辑
为了解决这个问题,创建一个通用方法,其中每个类型列表 ( List<T>
) 都转换为 String
.每个Object
有一个 toString()
方法!
static <T> String convertToString(List<T> list){
StringBuilder sb = new StringBuilder();
// assuming list is not null of course
for (T item : list) {
sb.append(item.toString());
}
return sb.toString();
}
关于java - 为什么不允许使用不同的泛型类型作为参数进行重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58053576/