Java 泛型 : method is not applicable for the arguments (T)

标签 java generics

有很多问题都有类似的错误,但似乎没有一个问题能解决我的问题。

我只是希望能够通过各种 bar 方法重用相同的 foo 泛型。正确的做法是什么?

public class Test {

    static public <T> String foo(T object) {
        return bar(object);
    }

    static public String bar(String object){
        return "string:" + object;
    }


    static public String bar(Integer object){
        return "integer:" + object;
    }


    public static void main(String[] args) throws Exception {
        System.out.println(foo("blabla"));
    }
}

我收到类型 Test 中的方法 bar(String) 不适用于参数 (T) 编译错误。

最佳答案

您应该按如下方式更新。由于函数无法知道类型,因此会引发错误

public class Test {

    static public <T> String foo(T object) {
        if(object instanceof String){
            return bar((String)object);
        }else if(object instanceof Integer){
            return bar((Integer)object);
        }
        return null;
}

    static public String bar(String object){
        return "string:" + object;
    }


    static public String bar(Integer object){
        return "integer:" + object;
    }


    public static void main(String[] args) throws Exception {
        System.out.println(foo("blabla"));
    }
}

关于Java 泛型 : method is not applicable for the arguments (T),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892559/

相关文章:

generics - 如何使用多个参数化类型(使用 where 子句)以便我可以使用任一参数

java - 创建通用 Number 子类的零值

java - 方法 play(Class<T>) 不适用于参数 (Class)

java - 如何设置 map 值类型的上限

java - Spring 中的 Flyway DB 升级器

java - 将 xml 转换为在文本周围包含 CDATA 的最佳方法(在 Java 中)

java - 如何将嵌套 JSON 数组转换为 java 对象?

java - Java 函数的参数是否需要可选接口(interface)?

Java 多线程 - 从列表中删除项目

java - Morphia:为每个数据库创建新的 Morphia 实例?