我有一个名为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的布尔字段。

我尝试了几种扩展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>的方法非常相似。

09-05 20:29