java - 如何扩展列表中包含的对象?

标签 java generics inheritance

我有一个名为 resourceItems 的列表,其中包含 ResourceItem 对象。

    public class ResourceItem {
        private Long id;
        private String name;
        public ResourceItem(Long id, String name) {
            this.id = id;
            this.name = name;
        }
        // getters and setters...
    }

    public class SomeClass {
        private List<ResourceItem>  resourceItems = FindAllResourcesWebSerbice();
    }

我想扩展列表中的对象以包含一个名为 selected 的 boolean 字段。

我已经尝试了几种扩展 ResourceItem(见下文)的类的变体,包括使用泛型的选项,但都没有成功。我喜欢使用泛型进行重用的解决方案。

    public class ExtendedResourceItem extends ResourceItem {
        private boolean selected = false;
        public ExtendedResourceItem() {
        }

        public boolean isSelected() {
            return selected;
        }

        public void setSelected(boolean selected) {
            this.selected = selected;
        }
    }

    public class SomeClass {
        private List<ResourceItem>  resourceItems = FindAllResourcesWebSerbice();
        private List<ExtendedResourceItem> extendedResourceItem = resourceItems;
    }

非常感谢任何帮助。

最佳答案

假设ResourceItem工具 equalshashCode正确的,为什么不只保留一组被选中的:

Set<ResourceItem> selectedResourceItems = new HashSet<ResourceItem>();

然后你可以 add 选择时添加到集合中的项目, remove 当它被取消选择时,检查是否设置了 contains 一个当你需要知道它是否被选中时。

此解决方案与 Michael Myers' comment 非常相似关于使用 Map<ResourceItem, Boolean> .

关于java - 如何扩展列表中包含的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13381774/

相关文章:

Java:如何理解神秘的堆栈跟踪?

java - JBoss 自定义登录模块只能工作一次

java - 如何停止内部重复行<c :forEach>tag of JSTL in JSP page

c# - List 的一般问题

generics - 通用数据结构的默认值

ios - Swift 中的闭包数组

java - 与java方法重载的混淆

java - 安卓工作室 1.0.2 : java. lang.RuntimeException : Unable to start activity ComponentInfo: java. lang.NullPointerException

java - java中如何继承@JsonFormat注解?

c++ - 具有编译时间常数的虚函数