写这个标题对于这个问题来说有点棘手:p
这是一个基本的java查询!
我正在使用谷歌云,它有不同的方法,如launchInstance,listInstances和terminateInstance等。这里,launchInstance将返回一个类型String作为成功或失败,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;
}
}
}
答案 0 :(得分:0)
如果你需要Java中任何对象的Generic返回类型,只需返回Object作为类型。(而不是为它创建一个单独的新类)然后你可以检查它是哪个对象并做你的东西。下面是一个简单的程序,你可以从中得到一个想法
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