gpt4 book ai didi

java - 如何在 Java 中使用 TypeToken 进行强制转换?

转载 作者:行者123 更新时间:2023-12-01 10:05:35 24 4
gpt4 key购买 nike

我正在将 TypeToken 传递给方法。下面的代码可以工作,但我担心如果不明确地将 Object list 定义为更具体的东西,稍后会困扰我,但我无法找到一种方法将其定义为或将其转换为其他任何东西而不得到编译器错误或警告。我似乎应该有一种方法可以做类似 (listTypeToken.getType()) list = ...

的事情

这是定义TypeToken的代码:

 TypeToken<List<ServerInfo>> listTypeToken =  new TypeToken<List<ServerInfo>>(){};

这是我使用TypeToken的代码。我认为对象列表应该被转换为更具体的东西。

public static <T> void processJson(GsonBuilder gsonBuilder, 
String jsonString,
String action,
TypeToken<T> listTypeToken)
{
//Trimmed from brevity
Object list = gson.fromJson(jobject.get(action).getAsJsonArray(),
listTypeToken.getType());
}

这是其他成功的方法之一,但我不确定它是否合适:

@SuppressWarning("rawtypes")
List list = gson.fromJson(jobject.get(action).getAsJsonArray(),
listTypeToken.getType());

最佳答案

fromJson 返回一个 T 所以正确的方法是这样的:

T list = gson.fromJson(jobject.get(action).getAsJsonArray(),
listTypeToken.getType());

如果您确定 T 始终是 List 的子类型,那么您需要在方法的声明中提供约束:

public static <T extends List<?>> void processJson(...)

或者可能是这样,它可以让您使用 List 的元素:

public static <E, T extends List<E>> void processJson(...)

关于java - 如何在 Java 中使用 TypeToken 进行强制转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36500650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com