动态转换对泛型类的响应

时间:2015-11-13 19:04:50

标签: java generics dynamic

我有以下通用类:

public class ErrorJsonResponse<T> {

    private String error;
    private String errCode;
    private String message;
    private T data;

    public ErrorJsonResponse() {
    }

    public ErrorJsonResponse(String error, T data) {
        setError(error);
        setData(data);
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}

我需要在运行时动态地转换为此类,例如:

(ErrorJsonResponse <runtimeType>) result

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以像这样投射通用泛型类:

public void onResult(ErrorJsonResponse<?> response) {
    ErrorJsonResponse<RuntimeException> castedResponse = (ErrorJsonResponse<RuntimeException>) response;
}

不能像这样投射它们:

public void onResult(ErrorJsonResponse<OtherException> response) {
    ErrorJsonResponse<RuntimeException> castedResponse = (ErrorJsonResponse<RuntimeException>) response;
}

在上面的示例中,ErrorJsonResponse<OtherException>ErrorJsonResponse<RuntimeException>是不可转换的类型