有很多类似错误的问题,但它们都不能解决我的问题。Java泛型:方法不适用于参数(T)
我只是想能够重复使用相同的foo
通用与各种bar
方法。什么是正确的方法来做到这一点?
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"));
}
}
我收到The method bar(String) in the type Test is not applicable for the arguments (T)
编译错误。
这没有任何意义。为什么不声明两个重载的'foo'函数呢? –
当然,因为你没有传递'String',所以你会传递一个'不管怎么样'。而'bar()'并没有声明它可以采用'无论什么碰巧'。我想也许你想要参数化类,而不是单个方法?例如,[像这样](http://pastebin.com/WUA5wGA6)。 –
aroth
@SergeyTachenov那么你打算写两个相同的'foo两次吗?' – VitoshKa