【问题标题】:convert ArrayList<?> to ArrayList<ClassName>将 ArrayList<?> 转换为 ArrayList<ClassName>
【发布时间】:2018-09-04 08:12:34
【问题描述】:

我在 ArrayAdapter 上设置了通用 ArrayList,它也是一个通用类型适配器。现在,我想将ArrayList&lt;?&gt; 转换为ArrayList&lt;MyClass&gt;。我已经搜索了很多,但无法弄清楚。感谢您的帮助。

我有这 2 个通用类型适配器和列表。

private ArrayAdapter<?> GeneralAdapter;
private ArrayList<?> GeneralList;

我在 Listview 上设置这个适配器。并动态地将不同类型的类添加到列表中。就像

GeneralList<State>
GeneralList<District>

设置此列表后,我正在使用 notifydatasetchanged() 更新适配器。

我现在只需要根据需要将此 GeneralList 转换为 ArrayList,ArrayList。我一次添加一个项目并再次将其用于其他课程,我清除了 generalList,然后将其设置为另一个课程。

【问题讨论】:

标签: java generics arraylist


【解决方案1】:

使用动态转换可以实现这一点。

如果你想要来自 GeneralList 的状态列表,那么 ->

List<State> states = filter(State.class, GeneralList);

这是你的过滤功能 ->

static <T> List<T> filter(Class<T> clazz, List<?> items) {
        return items.stream()
                .filter(clazz::isInstance)
                .map(clazz::cast)
                .collect(Collectors.toList());
}

来源 -> dynamic Casting in Java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 2019-03-15
    • 1970-01-01
    • 2019-09-04
    相关资源
    最近更新 更多