У меня есть класс, который содержит два атрибута:Осуществить сбор 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;
}
}
Я хочу этот класс реализует интерфейс 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);
}
[...]
}
Моя проблема заключается в том, что если я это сделаю, мой объект потеряет некоторую информацию. Я не вижу атрибутов «elements» и «totalCount».
Можно ли использовать интерфейс Collection и сохранить это атрибуты?
Если нет, есть ли хорошая альтернатива?
Это похоже на функцию в вашем отладчике. Всякий раз, когда он встречает коллекцию, он покажет вам элементы вместо реальных данных. Это очень полезно для более сложных коллекций (думаю, HashSet), потому что при отладке этих классов вас интересует содержимое и как они используются в вашем коде, но не столько во внутренней работе. Таким образом, ответ на этот вопрос будет зависеть от того, какую IDE вы используете (и, следовательно, какой отладчик) – Thirler