Initialisieren 2D-Array mit benutzerdefinierten Objekten
Ich habe eine Frage zum initialisieren ein 2D-Array mit benutzerdefinierten Objekten.
Ich habe 2 Objekte:CellEntity
, und ein MapEntity
wer enthält:
private final ICellEntity[][] cellMap;
Habe ich initialisiert cellmap
im MapEntity
's Konstruktor
cellMap = new CellEntity[width][length];
aber jeder CellEntity
ist null
.
Möchte ich wissen, ob es eine Lösung aufrufen (zu zwingen), eine Methode CellEntity
Klasse, um die init jeder CellEntity
im cellMap
?
- Was ist
ICellEntity
? Ist es ein typo-Fehler mit einem extrai
vor? - Irgendeinen Grund, warum Sie wollen, deklarieren Sie Ihre
cellMap
array als final? - public class CellEntity implementiert ICellEntity ; CellEntity Konstruktor muss eine CellBuilder-Klasse, um das Objekt zu erstellen. Ich will nicht zu ändern Sie die cellMap es ist der Grund, warum cellMap ist endgültig.
- Werfen Sie einen Blick auf meine Lösungen. Wenn es hilft, nehmen die Lösung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie wollen es endgültig. Sie können setzen Sie den Wert über den Konstruktor:
Können Sie erstellen, die in einem initialisierten cellMap array zuerst, dann pass über den Konstruktor zu setzen, die cellMap Wert innerhalb MapEntity.
Gut, wenn Ihr
cellMap
wurde als final deklariert, es gibt keinen Weg, können Sie es über eine Methode (accessor), andere als wohl mit der spiegelung (was ich nicht glaube, Sie mag es sehr viel).Es ist tatsächlich möglich, aber das array muss zuerst erstellt werden.
Erste variation
Erstellen Sie ein array im Konstruktor wird zunächst. Wir nicht ändern, die Referenz von cellMap nach der Schöpfung, aber wir können immer noch weisen die Werte innerhalb es:
Zweite Variante
Fast ähnlich wie die erste, erstellen Sie das array zunächst, wenn Sie nicht möchten, erstellen Sie im Konstruktor (personallyy ich nicht favorisieren diesen Ansatz):