java - 将 ArrayList<?> 转换为 ArrayList<ClassName>

标签 java generics arraylist

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

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

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

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

GeneralList<State>
GeneralList<District>

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

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

最佳答案

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

如果您想要 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

关于java - 将 ArrayList<?> 转换为 ArrayList<ClassName>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52161710/

相关文章:

java - 从 Java 的一个流中读取文本和二进制文件

java - 在 java pojo 中将相同的 json 字段设置为不同的属性

java - 为什么使用 <T extends Superclass> 而不仅仅是 Superclass?

c# - "Cannot implicitly convert type ' 这个方法<T> ' to ' T '"

java - Java中的ArrayList和输入

java - 集线器已关闭或没有响应 : Unexpected char 0x131 at 23 in User-Agent value: selenium/3. 14.0 (java w²ndows) SeleniumGrid v3.14.0

java - 定位特定的 JXTable 列值以在新框架中打开

Java - 从字符串中解析枚举的通用函数

java - 似乎无法打印充满对象/枚举的数组列表

java - 以 ArrayList 作为参数相乘列表元素的方法