Bien, entonces estoy creando una matriz 2D dinámica en Java que implementa la interfaz java.util.Collection. Hice que mi array lo implementara porque quería que tuviera la misma funcionalidad que un Collection
normal. Sin embargo, no puedo implementar el método size()
porque en la interfaz devuelve un número entero y una matriz 2D podría desbordar un tipo entero.¿Puede una matriz 2D dinámica implementar el método Java.Collection.size()?
He aquí un fragmento de mi clase que estoy tratando de hacer:
public abstract class AbstractMatrix<E> implements Collection<E>{
@Override
public long size() {
return columns * rows;
}
}
Ahora, esto no funcionará porque "El tipo de retorno es incompatible con Collection<E>.size()
", y si puedo cambiar el tipo de int , columnas * filas podrían desbordarse.
Sé que no puedo anular el método de tamaño de esta manera, pero ¿hay alguna manera de asegurarme de que el método devuelve el tamaño correcto mientras sigo implementando la interfaz Collection
?
Sí, sé que esto no es práctico y es probable que nunca sea un problema, pero me interesaba saber si había una buena solución para ello.
Un desbordamiento como en una matriz de más de 45k filas x 45k columnas (suponiendo que sea cuadrado)? – assylias
¿Planea tener más de 2,147,483,647 elementos? –
¿Qué podrías hacer * con un 'tamaño' que sea' columnas * filas'? ¿Qué te dejaría hacer con la matriz? – sudocode