gpt4 book ai didi

java - 获取对象的类类型并在变量声明中使用它

转载 作者:行者123 更新时间:2023-12-01 11:15:45 25 4
gpt4 key购买 nike

我想做的,但我不知道这是否可能,是获取对象的类类型,然后在声明中使用它。我正在使用 Gson 库进行 Json 转换,我想创建一个可以采用任何对象 Arraylist 类型并将其转换为 JsonArray 的方法。我下面有的是代码。 X 类型的 Arraylist 将被强制转换为 Object 类型,然后传递给下面的方法。 INSERT_CLASS_HERE 应根据对象类型是动态的。

public static JsonArray getJsonArray(List<Object> list , Class theClass){

Gson gson = new Gson();
JsonElement element = gson.toJsonTree(list, new TypeToken<List<INSERT_CLASS_TYPE_HERE>>() {}.getType());

if (! element.isJsonArray()) {
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

JsonArray jsonArray = element.getAsJsonArray();
return jsonArray;
}

我尝试的是以下内容,但这不是正确的语法,并且会引发错误

public static JsonArray getJsonArray(List<Object> list , Class theClass){
if(list.size() == 0) return null;

Gson gson = new Gson();
JsonElement element = gson.toJsonTree(list, new TypeToken<List<theClass>>() {}.getType());

if (! element.isJsonArray()) {
// fail appropriately
try {
throw new Exception();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

JsonArray jsonArray = element.getAsJsonArray();
return jsonArray;
}

1)这可能吗?如果不可能,为什么不呢?2)如果不是,如何实现?

谢谢!

最佳答案

为什么要传入类型值?这不应该是必需的。

public static JsonArray getJsonArray(List<Object> list){
if(list.size() == 0) return null;

Gson gson = new Gson();
JsonElement element = gson.toJsonTree(list);
JsonArray jsonArray = element.getAsJsonArray();
return jsonArray;
}

为了避免强制转换,您可以执行以下操作

public static <T> JsonArray getJsonArray(List<T> list){
if(list.size() == 0) return null;

Gson gson = new Gson();
JsonElement element = gson.toJsonTree(list);
JsonArray jsonArray = element.getAsJsonArray();
return jsonArray;
}

关于java - 获取对象的类类型并在变量声明中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31837032/

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