Java泛型返回值如何安全提取具体类型值?

java中泛型返回后如何从中提取所需值

在java中,使用泛型时可能会遇到返回值为泛型(通配符)的情况,这可能会令人困惑。本文将探讨如何应对这种情况并从包含通配符的对象中获取所需的值。

具体来说,您遇到了以下代码问题:

globalresponse result = new globalresponse<>();
result = client.getvalue(point);
object o = result.getdata()

其中,globalresponse是一个泛型类,?表示通配符。现在的问题是如何从result中取出类型为t的值。

解决方案

如果您可以确定client.getvalue返回值中data的类型,则可以将globalresponse中的泛型显式指定为该类型。例如,如果数据类型为string,则可以这样做:

globalresponse result = client.getvalue(point);
string o = result.getdata();

但是,如果您无法确定类型或者它可能是多种类型,则需要使用instanceof操作符来检查对象的类型并强转到特定的类型。以下是如何实现:

if (result.getData() instanceof Integer) {
    Integer o = (Integer) result.getData(

); } else if (result.getData() instanceof String) { String o = (String) result.getData(); }