Java 泛型返回类型:如何从许多可能的返回类型中捕获返回类型?
对于这个问题,写标题有点棘手:pJava 泛型返回类型:如何从许多可能的返回类型中捕获返回类型?,java,Java,对于这个问题,写标题有点棘手:p 这是一个基本的java查询 我正在使用谷歌云,它有不同的方法,比如launchInstance、listInstances和terminateInstance等等。。在这里,launchInstance将返回一个类型字符串作为Success或Fail,listInstances将返回ArrayList,依此类推 现在,我想要一个通用的返回类型,所以我创建了一个类,它有数据项,比如status、reason和dataRequired,最终将发送所需的数据,即Str
这是一个基本的java查询
我正在使用谷歌云,它有不同的方法,比如launchInstance、listInstances和terminateInstance等等。。在这里,launchInstance将返回一个类型字符串作为Success或Fail,listInstances将返回ArrayList,依此类推 现在,我想要一个通用的返回类型,所以我创建了一个类,它有数据项,比如status、reason和dataRequired,最终将发送所需的数据,即String、ArrayList或HashMap。 如何实现此功能。 下面是我想做的示例代码:
public class ResponseHelper {
private String status;
private String reason;
private String type;
private Object data;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public void dataRequired(Object data) {
switch(getType()) {
case "ArrayList": this.data=(ArrayList<String>)data;
}
}
}
公共类响应帮助{
私有字符串状态;
私有字符串原因;
私有字符串类型;
私有对象数据;
公共字符串getStatus(){
返回状态;
}
公共无效设置状态(字符串状态){
这个状态=状态;
}
公共字符串getReason(){
返回原因;
}
公共无效设置原因(字符串原因){
这个。原因=原因;
}
公共字符串getType(){
返回类型;
}
公共void集合类型(字符串类型){
this.type=type;
}
需要公共无效数据(对象数据){
开关(getType()){
案例“ArrayList”:this.data=(ArrayList)data;
}
}
}
如果您需要Java中任何对象的通用返回类型,只需将对象作为类型返回即可(而不是为其创建单独的新类),然后您可以检查它是哪个对象并执行您的操作。下面是一个简单的程序,你可以从中得到一个想法
public class GenericReturn {
public static void main(String[] args) {
Object output = returnMeSomething(2);
System.out.println(output.getClass().getSimpleName());
output = returnMeSomething(1);
System.out.println(output.getClass().getSimpleName());
output = returnMeSomething(0);
System.out.println(output.getClass().getSimpleName());
}
/** This can return any Object you want as it has Object as return type*/
public static Object returnMeSomething(int num) {
if (num == 1) {
return "Test";
}
else if (num == 2) {
return new HashMap();
}
return new ArrayList();
}
}
该输出如下所示
HashMap
String
ArrayList
如果您需要Java中任何对象的通用返回类型,只需将对象作为类型返回即可(而不是为其创建单独的新类),然后您可以检查它是哪个对象并执行您的操作。下面是一个简单的程序,你可以从中得到一个想法
public class GenericReturn {
public static void main(String[] args) {
Object output = returnMeSomething(2);
System.out.println(output.getClass().getSimpleName());
output = returnMeSomething(1);
System.out.println(output.getClass().getSimpleName());
output = returnMeSomething(0);
System.out.println(output.getClass().getSimpleName());
}
/** This can return any Object you want as it has Object as return type*/
public static Object returnMeSomething(int num) {
if (num == 1) {
return "Test";
}
else if (num == 2) {
return new HashMap();
}
return new ArrayList();
}
}
该输出如下所示
HashMap
String
ArrayList
与其使用
switch(getType())
不如使用if(ArrayList的数据实例)
等等,强制转换dataRequired
是毫无意义的,因为这个数据属于对象的类型。与其使用switch(getType())
不如使用if(ArrayList的数据实例)
等等。强制转换的数据required
是没有意义的,因为这个数据属于对象类型。