gpt4 book ai didi

java - 当您仅指定使用List接口(interface)时,java是否使用ArrayList或LinkedList?

转载 作者:行者123 更新时间:2023-12-01 07:07:02 27 4
gpt4 key购买 nike

我刚刚意识到我有一些代码可以运行并且所有测试都通过,即使我从未指定要使用 List 接口(interface)的哪个特定实现。

这是有问题的函数

public List<Product> getProductList(int CategoryId)
{
List<Product> returnedProducts = null;
HttpGet httpGet = new HttpGet("https://www.shirts.io/api/v1/products/category/"+CategoryId+"/?api_key="+this.apiKey);
try
{
response = httpClient.execute(httpGet);
if(response.getStatusLine().getStatusCode() == 200)
{
entity = response.getEntity();
jsonResponse = EntityUtils.toString(entity);

Type listType = new TypeToken<List<Product>>(){}.getType();
JsonNode root = mapper.readTree(jsonResponse);
ArrayNode products = (ArrayNode) root.path("result");
returnedProducts = (List<Product>) gson.fromJson(products.toString(), listType);
}

}
catch (IOException e)
{
e.printStackTrace();
}

return returnedProducts;
}

这是对上述函数的测试

public void testGetProductCategories()
{
List<Category> categories = null;
categories = productCalls.getProductCategories();
assertEquals(20,categories.size());
}

一切正常,没有给我任何编译错误。为什么会出现这种情况?我认为您必须指定您使用的是 ArrayList 还是 LinkedList。为什么我的代码无需指定其中之一即可运行?

最佳答案

当您返回 gson.fromJson(products.toString(), listType); 的结果时,创建具体 List 对象的责任在于 gson.

关于java - 当您仅指定使用List接口(interface)时,java是否使用ArrayList或LinkedList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21713919/

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