Итак, я создаю динамический 2D-массив на Java, который реализует интерфейс java.util.Collection. Я реализовал это в своем массиве, потому что хотел, чтобы он имел ту же функциональность, что и обычный Collection
. Однако я не могу реализовать метод size()
, потому что в интерфейсе он возвращает целое число, а 2D-матрица потенциально может переполнить целочисленный тип.
Вот фрагмент моего класса, который я пытаюсь создать:
public abstract class AbstractMatrix<E> implements Collection<E>{
@Override
public long size() {
return columns * rows;
}
}
Теперь это не сработает, потому что «Тип возвращаемого значения несовместим с Collection
», и если я изменю тип на int, столбцы * строки могут переполниться.
Я знаю, что не могу переопределить метод size таким образом, но могу ли я каким-либо образом убедиться, что метод возвращает правильный размер, при этом реализуя интерфейс Collection
?
Да, я знаю, что это нецелесообразно и, скорее всего, никогда не будет проблемой, но мне было интересно узнать, есть ли для этого хорошее решение.