D'accord, donc je crée une array dynamique en 2D en Java qui implémente l'interface java.util.Collection. J'ai fait en sorte que mon array l'implémente parce que je voulais qu'il ait la même fonctionnalité qu'une Collection
normale. Cependant, je ne peux pas implémenter la méthode size()
parce que dans l'interface elle retourne un entier et une matrice en 2D pourrait potentiellement dépasser la capacité d'un type entier.
Voici un extrait de la classe que j'essaie de créer :
public abstract class AbstractMatrix implements Collection{
@Override
public long size() {
return columns * rows;
}
}
Maintenant, cela ne fonctionnera pas parce que "Le type de retour est incompatible avec Collection.size()
", et si je change le type en int, columns * rows pourrait dépasser la capacité.
Je sais que je ne peux pas remplacer la méthode size de cette manière, mais y a-t-il un moyen de m'assurer que la méthode retourne la taille correcte tout en implémentant toujours l'interface Collection
?
Oui, je sais que c'est peu pratique et que cela ne posera probablement jamais de problème, mais j'étais curieux de savoir s'il y avait une bonne solution pour cela.