有很多问题都有类似的错误,但似乎没有一个问题能解决我的问题。
我只是希望能够通过各种 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/