Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 泛型返回类型:如何从许多可能的返回类型中捕获返回类型?_Java - Fatal编程技术网

Java 泛型返回类型:如何从许多可能的返回类型中捕获返回类型?

Java 泛型返回类型:如何从许多可能的返回类型中捕获返回类型?,java,Java,对于这个问题,写标题有点棘手:p 这是一个基本的java查询 我正在使用谷歌云,它有不同的方法,比如launchInstance、listInstances和terminateInstance等等。。在这里,launchInstance将返回一个类型字符串作为Success或Fail,listInstances将返回ArrayList,依此类推 现在,我想要一个通用的返回类型,所以我创建了一个类,它有数据项,比如status、reason和dataRequired,最终将发送所需的数据,即Str

对于这个问题,写标题有点棘手:p

这是一个基本的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
是没有意义的,因为
这个数据属于
对象类型。