java - 为什么不允许使用不同的泛型类型作为参数进行重载?

标签 java generics overloading

为什么在 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/

相关文章:

c# - 是否可以创建一个返回两种可能类型之一的方法?

generics - 迁移到 NHibernate 4.0.3.4000 时,Iesi.Collections.Generic.LinkedHashSet<T> 是 Iesi.Collections.Generic.ISet<T> 的最佳替代品吗

c# - 指定类本身的泛型类的基类约束

c++ - 纯虚函数重载

java - 订购具有重复字符串的 ArrayList

java - Google Bigquery 加载具有本地文件大小限制的数据

java - Android 上的 db4o 查询速度较慢

java - 如何使用java将工作表添加到现有的大型Excel文件(20MB)?

java - 将 java 转换为 scala - 重载静态方法

c++ - 从一个命名空间内部调用在多个命名空间中重载的函数