我想编写一个可以接受类型参数(或任何方法可以从中找出类型)并返回此类型的值的方法,因此我不必强制转换返回类型。
这是一个方法:
public Object doIt(Object param){
if(param instanceof String){
return "string";
}else if(param instanceof Integer){
return 1;
}else{
return null;
}
}
当我调用这个方法并传入一个字符串时,即使我知道返回类型将是一个字符串,我也必须强制转换返回对象。这类似于 int 参数。
我应该如何编写这个方法来接受一个类型参数并返回这个类型?
最佳答案
如果您不想使用特定接口(interface)来处理这些内容,您可以通过这种方式使用泛型方法:
public <T> T mymethod(T type)
{
return type;
}
请注意,通过这种方式编译器对您计划在该方法中使用的类型一无所知,因此您应该使用绑定(bind)类型,例如:
public <T extends YourType> T mymethod(T type)
{
// now you can use YourType methods
return type;
}
但是你应该确定你需要一个泛型方法,这意味着 doIt
的实现对于你计划使用它的所有类型都是相同的。否则,如果每个实现都不同,只是重载方法,它会正常工作,因为返回类型不用于动态绑定(bind):
public String my(String s)
{
return s;
}
public int my(int s)
{
return s;
}
int i = my(23);
String s = my("lol");
关于Java 泛型返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2669326/