gpt4 book ai didi

java - 有没有办法检查泛型参数 (HashMap>) 是否属于某种类型?

转载 作者:行者123 更新时间:2023-12-01 19:36:08 24 4
gpt4 key购买 nike

我有一个使用 HashMap<Integer, ArrayList<CustomObject1>> map 的函数作为参数。但是,现在功能已经扩展,我需要使用包含 ArrayList<CustomObject2>> 的不同 HashMap 来调用此函数。 。

我研究了泛型并尝试传入 HashMap<Integer, ArrayList<? extends CustomObjectBase>> map但我需要知道实际传入的内容,以便我可以做出相应的响应。由于类型删除,创建另一个函数不起作用。我也尝试过使用 java instanceof但这也不起作用。

关于如何解决这个问题有什么建议吗?谢谢!

最佳答案

我之前自己花了几个小时尝试过,但没有结果。通常首选将类作为参数传递,如下所示:

public void <T> handle(HashMap<Integer, ArrayList<T>> map, Class<T> clazz)
{
// do whatever you need to, based on
}

然后,你可以这样调用它:

var map1 = new HashMap<Integer, ArrayList<CustomObject1>>();
// map1 populate...
var map2 = new HashMap<Integer, ArrayList<CustomObject2>>();
// map1 populate...
var h = new Handler();
h.handle(map1, CustomObject1.class);
h.handle(map2, CustomObject2.class);

关于java - 有没有办法检查泛型参数 (HashMap<Integer, ArrayList<?>>) 是否属于某种类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57469543/

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