Verwenden eigener Object-Klassen

Braatbecker

Mitglied
Hi, vielleicht kann mir wer bei meinem Problem helfen,

folgende Ausgangslage:

ich habe ein Programm, mit welchem ich innerhalb eines "Dungeons" mit einer Figur rumlaufen kann:
XXXXXXXXXXXXXX
X..O......XX......O..X
X..........XX..........X
XXXXXXXXXXXXXX

Die Karte wird innerhalb eines 2D-Arrays in Strings gespeichert(String[][] board). Also " " ist frei, "X" ist Wand und "O" ist Figur. Nun wollte ich weiterführend ein Object-Array erstellen (Object[][] board) in welches ich Leerzeichen für leere Felder und eigene Objekte für Wände, etc speichere.
Hierzu habe ich eine Klasse "Objekte" und eine Klasse "Wand" in ein Package gelegt. "Wand extends Objekte" und "Objekte extends Object". Nun dachte ich, müssten sowohl Wand als auch Objekte, über Vererbung, Objects sein. Das ist es aber nicht. Mein Array wirft beim Einsetzen einer Wand (oder Objekte) eine java.lang.ArrayStoreException aus.

Was ist hier mein Denkfehler?

Danke schonmal,

Braat
 

Muli

Mitglied
Hallo,

liste mal bitte die entsprechenden Quellcodebereiche mit auf. Das sollte eigentlich funktionieren!

Java:
 private void erzeugeArray(){
 Object[] objs =new Object[1];
        objs[0]=new myObj2();

    }
 
    private class myObj extends Object {
        public myObj(){

        }
    }
    private class myObj2 extends myObj {
        public myObj2(){

        }
}

So klappt es jedenfalls.

LG,
Muli
 

Braatbecker

Mitglied
ich habe ja eigene Objekte erstellt, welche von Objects erben sollten

Java:
 package Objekte;

public class Objekte extends Object {

}

Java:
 package Objekte;

public class Wand extends Objekte {

    private boolean destroyable = false;
    private boolean crossable = false;
    
}

mehr Inhalt haben diese noch nicht. Sie sollen erstmal nur gespeichert werden. Und zwar mach ich das momentan so:
Java:
this.board[i][j] = new Wand();

this.board ist wie bereits erwähnt: private Object[][] board;
 

Braatbecker

Mitglied
juppieh. Hat sich erledigt :) Dank deines Beispiels bin ich auf die Idee gekommen, die Initialisierung des Objectarrays zu überprüfen. Und tatsächlich hatte ich vergessen, diese umzuschreiben -_- Dass man wegen solcher Kleinigkeiten immer Stunden rumsucht...

Also danke noch mal :)

lg
 

tfa

Top Contributor
Wieso machst du das board-Array vom Typ Object[][] und nicht Objekte[][]? Das wäre doch viel typsicherer. Ein Object kann alles sein. Für leere Felder verwendest du dann ein eigenes "LeeresFeld extends Objekte". Oder nenn "Objekte" gleich lieber in "BoardElement" um.
 

Landei

Top Contributor
Generell ist ein Array von Object doof. Du kannst ja da im Prinzip alles reinstecken: Strings, Dates, BufferedReaders u.s.w.

Schreibe doch erst einmal ein Klasse, die alle Gemeinsamkeiten deines Dungeon-Hintergrunds zusammenfasst:
Java:
abstract class Tile {
   final String symbol;
   public Tile(String symbol) {
      this.symbol = symbol;
   }
   @Override public String toString() { return symbol; }
   ... andere nützliche allgemeine Methoden
}

class Wall extends Tile {
   public Wall {
      super("#");
   }
   ... andere wand-spezifische Methoden
}
Jetzt kannst du mit Tile[][] board = ... ein Spielfeld definieren, dass nur "deine" Klassen enthalten kann, und an dessen Elementen du schonmal alle Tile-Methoden aufrufen kannst, ohne zu casten (den Typ umzuwandeln).

[edit]Ich sehe gerade, tfa bläst ins gleiche Horn...
 

Braatbecker

Mitglied
oh. Hier wurde ja noch mehr geschrieben. Sorry, dass ich nicht darauf eingegangen bin. Ich hatte das Thema für erledigt gehalten. Anfangs hatte ich ein Object[][], weil leere Felder einfach leere Strings blieben. Ich bin selbst auf Objekte[][] umgestiegen, nachdem ich ein Floor-Objekt erstellt hatte.

Ich habe nun quasi Objekte, welche Boden, Wand, oder Feind sein können. Jeder Feind erbt von der Klasse Feinde, welche von Objekte erbt, welche von Object erbt.

Aber danke dennoch für den Hinweis :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Interface Parameter und Rückgabewerte in Lambda Ausdrücken verwenden Java Basics - Anfänger-Themen 16
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
R Operatoren Rechenoperation verwenden für Taschenrechner. Java Basics - Anfänger-Themen 32
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
N Kann man einen Iterator nur einmal verwenden Java Basics - Anfänger-Themen 5
I Scheduling: "Quartz" verwenden, Hilfe bei Umstellung Java Basics - Anfänger-Themen 3
B non-modular dependency in modularem Projekt verwenden Java Basics - Anfänger-Themen 3
A Ergebnis einer Methode bei einer anderen verwenden Java Basics - Anfänger-Themen 13
B Jar Dateien ohne IDE verwenden? Java Basics - Anfänger-Themen 1
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
Ameise04 Variablen Inhalt einer Variable im Code verwenden? Java Basics - Anfänger-Themen 9
P Objekt in mehreren Methoden verwenden. Java Basics - Anfänger-Themen 3
A Methode in einer anderen Klasse verwenden Java Basics - Anfänger-Themen 1
V Wachstum berechnen und in Ist-Formel verwenden Java Basics - Anfänger-Themen 5
M this.object in einer parameterlosen Methode verwenden Java Basics - Anfänger-Themen 3
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
Torsten.E JavaFX mit Visual Studio Code verwenden Java Basics - Anfänger-Themen 1
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
K Boolean in einer erstellten Klasse verwenden Java Basics - Anfänger-Themen 14
J Methoden Methoden einer public class AutoCompleteTextField verwenden Java Basics - Anfänger-Themen 14
PaperHat Methoden als Parameter anderer Methode verwenden Java Basics - Anfänger-Themen 11
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
E Sinn: final in Parameterliste verwenden Java Basics - Anfänger-Themen 2
M Klassen Warum sollte man Abstraktion verwenden? Java Basics - Anfänger-Themen 4
N Attribut einer anderen Klasse übertragen/verwenden Java Basics - Anfänger-Themen 5
M Probleme beim verwenden von Packages Java Basics - Anfänger-Themen 6
C Polymorphie Was genau ist Polymorphie und wann genau sollte man es verwenden? Java Basics - Anfänger-Themen 9
T Klassen Klasse in einer anderen Klasse verwenden. Java Basics - Anfänger-Themen 3
S Eingabe in anderer Klasse verwenden Java Basics - Anfänger-Themen 3
M Schleifenergebnis in selbiger wieder verwenden Java Basics - Anfänger-Themen 7
A OOP ArrayList verwenden Java Basics - Anfänger-Themen 3
M Erste Schritte Arraylist in einer anderen Klasse verwenden Java Basics - Anfänger-Themen 11
I BigDecimal als Parameter verwenden Java Basics - Anfänger-Themen 3
D ArrayList in einer anderen Klasse verwenden Java Basics - Anfänger-Themen 7
NightmareVirus überschriebene Methode der Oberklasse verwenden Java Basics - Anfänger-Themen 3
J Parameter in main verwenden Java Basics - Anfänger-Themen 3
M Eingabe des Benutzers Verwenden Java Basics - Anfänger-Themen 9
P Quadratzeichen verwenden Java Basics - Anfänger-Themen 7
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
H Methoden verwenden Java Basics - Anfänger-Themen 4
B Interface JTextField Eingabe als String verwenden Java Basics - Anfänger-Themen 3
OlafHD Variable aus einer anderen Klasse Verwenden Java Basics - Anfänger-Themen 11
K Dateien aus Source-Package verwenden Java Basics - Anfänger-Themen 10
N System Proxy verwenden Java Basics - Anfänger-Themen 0
J Erste Schritte Scanner negative zahl einlesen und verwenden. Java Basics - Anfänger-Themen 6
G Wie kann man den Erfolg einer Zuweisung als Boolean Wert verwenden? Java Basics - Anfänger-Themen 12
H jar datei verwenden Java Basics - Anfänger-Themen 1
J ArrayList über verschiedene Klassen verwenden Java Basics - Anfänger-Themen 7
C compareTo verwenden Java Basics - Anfänger-Themen 2
W IllegalArgumentException 2 mal verwenden Java Basics - Anfänger-Themen 3
S Variablen Vektor zur Berechnung verwenden Java Basics - Anfänger-Themen 4
L Dialogbox statt Konsole verwenden Java Basics - Anfänger-Themen 5
P JSON-Konfigurationsdatei verwenden: Probleme mit Pfad Java Basics - Anfänger-Themen 1
W Darf man den Übergabeparameter in einer Methode nicht verwenden? Java Basics - Anfänger-Themen 2
E Methode aus Klasse eins in Klasse zwei verwenden? Java Basics - Anfänger-Themen 2
E Datentypen Benutzerdefinierten Datentyp verwenden Java Basics - Anfänger-Themen 1
J Objekte zur Laufzeit erzeugen und direkt verwenden Java Basics - Anfänger-Themen 9
B Zahlen zerlegen und verwenden Java Basics - Anfänger-Themen 2
S Inhalt aus anderen Klassen verwenden Java Basics - Anfänger-Themen 1
I Rückgabewert einer Methode in anderer Klasse verwenden Java Basics - Anfänger-Themen 2
T Vererbung Variable aus anderer Klasse verwenden Java Basics - Anfänger-Themen 8
T File aus Classpath verwenden Java Basics - Anfänger-Themen 3
B Klassen Eigene "non static" Klasse in Main verwenden! Java Basics - Anfänger-Themen 12
T Array in andere Klasse verwenden Java Basics - Anfänger-Themen 3
K Von einem Double wert nur die Zahl vor dem Komma verwenden Java Basics - Anfänger-Themen 9
T Globale Variable mehrmals verwenden Java Basics - Anfänger-Themen 7
M Class Datein aus einen Unterordner verwenden Java Basics - Anfänger-Themen 2
B Objekt in mehereren Klassen verwenden Java Basics - Anfänger-Themen 4
L Erste Schritte Methode aus anderer Klasse verwenden Java Basics - Anfänger-Themen 16
M Wann final verwenden? Java Basics - Anfänger-Themen 5
M Wann eine Wrapper Klasse verwenden und wann einen primitiven Datentypen? Java Basics - Anfänger-Themen 8
G ArrayList in anderer Klasse verwenden Java Basics - Anfänger-Themen 31
D Erste Schritte Countdown mehrfach verwenden Java Basics - Anfänger-Themen 5
D Wert einer Variable in paint-Methode verwenden Java Basics - Anfänger-Themen 2
E wann welche Konstanten verwenden? Java Basics - Anfänger-Themen 7
K JTextField auslesen, in int umwandeln und in einer anderen Klasse als Zähler verwenden Java Basics - Anfänger-Themen 3
T return-Wert verwenden? Java Basics - Anfänger-Themen 12
I SwingUtilities.invokeLater - Wie verwenden für meinen Code? Java Basics - Anfänger-Themen 4
Y this verwenden oder nicht? Java Basics - Anfänger-Themen 23
O Absolute Pfade in mehrere Klassen verwenden Java Basics - Anfänger-Themen 3
D JTextField verwenden ohne Eingabe einer Variable Java Basics - Anfänger-Themen 4
R Switch Werte außerhalb verwenden Java Basics - Anfänger-Themen 2
L Objekte aus einem void in anderen voids verwenden Java Basics - Anfänger-Themen 8
MiMa Zip in util verwenden Java Basics - Anfänger-Themen 7
P Liste in einer Klasse füllen und mehreren anderen Klassen lesend verwenden Java Basics - Anfänger-Themen 5
K Mehrere Klassen beim JavaEditor verwenden - möglich? Java Basics - Anfänger-Themen 8
K Klassen Eigene Exception verwenden Java Basics - Anfänger-Themen 9
T Verwenden von Variablen aus anderen Klassen Java Basics - Anfänger-Themen 7
S Scanner -> Zahl lesen und weiter verwenden Java Basics - Anfänger-Themen 8
SexyPenny90 JLabel Text und Icon untereinander verwenden Java Basics - Anfänger-Themen 3
J eigene packages bzw klassen verwenden Java Basics - Anfänger-Themen 25
P Date oder Kalender? Was soll man verwenden? Java Basics - Anfänger-Themen 2
K Wann Vererbung und wann Interface verwenden? Java Basics - Anfänger-Themen 12
A Wenn genau welche Liste verwenden? Java Basics - Anfänger-Themen 6
X OOP Methoden und Variablen in anderer Klasse verwenden Java Basics - Anfänger-Themen 5
P Java Stream, wann welche Stream verwenden? Java Basics - Anfänger-Themen 3
M gleiche Box in GUI mehrmals verwenden Java Basics - Anfänger-Themen 5
L Erste Schritte Sollte ich hier lieber Cases verwenden oder wäre eine If-Bedingung besser? Java Basics - Anfänger-Themen 6
C lokale Variable verwenden statt globale Java Basics - Anfänger-Themen 7
M String Inhalt wird überschrieben (Subklassen verwenden denselben String) Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben