Java 泛型返回类型

2022-09-01 01:50:10

我想写一个可以接受类型参数(或任何方法可以计算出类型)并返回此类型的值的方法,这样我就不必强制转换返回类型。

这是一个方法:

public Object doIt(Object param){
    if(param instanceof String){
        return "string";
    }else if(param instanceof Integer){
        return 1;
    }else{
        return null;
    }
}

当我调用此方法并传入 String 时,即使我知道返回类型将是 String,我也必须强制转换返回 Object。这类似于 int 参数。

我应该如何编写此方法来接受类型参数并返回此类型?


答案 1

如果你不想有一个特定的接口来处理这些东西,你可以用这种方式使用泛型方法:

public <T> T mymethod(T type)
{
  return type;
}

请注意,通过这种方式,编译器对您计划在该方法中使用的类型一无所知,因此您应该使用绑定类型,例如:

public <T extends YourType> T mymethod(T type)
{
  // now you can use YourType methods
  return type;
}

但是你应该确保你需要一个泛型方法,这意味着对于你计划使用它的所有类型,它的实现都是相同的。否则,如果每个实现都不同,只需重载方法,它将正常工作,因为返回类型不用于动态绑定:doIt

public String my(String s)
{
  return s;
}

public int my(int s)
{
  return s;
}

int i = my(23);
String s = my("lol");

答案 2

从这里开始:

public interface Command<T>
{
    T execute(T parameter);
}

推荐