我有一个包含两个属性的类:实现Java集合而不丢失信息
@lombok.Data
public class BusinessObjectCollection<T> implements Serializable {
protected List<T> elements;
protected Integer totalCount;
public BusinessObjectCollection() {
this.elements = new ArrayList<>();
this.totalCount = 0;
}
}
我想这个类,以便调用remove实现了接口java.util.Collection中的() ,addAll()和一些其他方法直接在BusinessObjectCollection对象上。
所以我修改我的课是这样的:
@lombok.Data
public class BusinessObjectCollection<T> implements Collection<T>, Serializable{
protected List<T> elements;
protected Integer totalCount;
public BusinessObjectCollection() {
this.elements = new ArrayList<>();
this.totalCount = 0;
}
@Override
public boolean addAll(Collection<? extends T> c) {
return elements.addAll(c);
}
@Override
public boolean removeAll(Collection<?> c) {
return elements.removeAll(c);
}
[...]
}
我的问题是,如果我这样做,我的对象失去了一些信息。我看不到“元素”和“totalCount”属性。
是否有可能使用Collection接口,并保持这个属性?
如果不是,那么有没有好的选择?
这似乎是您的调试器中的一个功能。无论何时遇到集合,它都会显示元素而不是实际的数据。这对于更复杂的集合(HashSet)非常有用,因为在调试那些对内容感兴趣的类时,以及它们在代码中的使用方式,而不是在内部运行时。所以这个答案取决于你使用的IDE(以及调试器) – Thirler