Konstruktor - jedes Objekt einzeln erzeugen - alternative?

D

David Nienhaus

Gast
Hallo,

ich frage mich gerade, ob es eine elegantere Lösung gibt, mehrere Objekte in einem Konstruktor quasi auf einmal zu erzeugen. In meinem konkreten Beispiel: Ich möchte 21 verschiedene Inventare erzeugen, die mit i1-i21 durchnummeriert sein sollen.
Momentan sieht das ganze bei mir so aus:

Code:
Inventar i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21;
       
        i1 = new Inventar();
        i2 = new Inventar();
        i3 = new Inventar();
        i4 = new Inventar();
        i5 = new Inventar();
        i6 = new Inventar();
        i7 = new Inventar();
        i8 = new Inventar();
        i9 = new Inventar();
        i10 = new Inventar();
        i11 = new Inventar();
        i12 = new Inventar();
        i13 = new Inventar();
        i14 = new Inventar();
        i15 = new Inventar();
        i16 = new Inventar();
        i17 = new Inventar();
        i18 = new Inventar();
        i19 = new Inventar();
        i20 = new Inventar();
        i21 = new Inventar();

Das geht doch besitmmt irgendwie mit einer for-Schleife, oder? Ich wüsste allerdings nicht wie.
 

Robat

Top Contributor
Array + for-Schleife sind hier das Stichwort.
Erstell dir ein Inventar-Array der Länge 21 und initialisier in der for-Schleife jedes einzelne Element mit einem neuen Inventar-Objekt.
 

Javinner

Top Contributor
@David Nienhaus
Dabei denke ich an eine Liste<ObjectDeinerWahl>. Diese kannst du dann a) in der Klasse füllen oder b) eine Factory bauen, wenn die Inventare wo anders ebenso Verwendung finden und dahin geladen werden sollen. Liste aus einem einfachen Grund: viel bequemer!
 
D

David Nienhaus

Gast
Meinst du so? Klappt irgendwie noch nicht :D

Code:
Inventar[] meinArray = new Inventar[21];
       
        for (int i=0; i<meinArray.length(); i++)
        {
               meinArray[i] = new Inventar();
        }
 
D

David Nienhaus

Gast
Er kennt die Methode .length() nicht .. Ich habe aber java.util.*; importiert.
Woran könnte es liegen?
 

Javinner

Top Contributor
@David Nienhaus
When my wife let me go to fishing..
Eventuell würde ich es so gestalten. Eine Option, das Inventar durch eine extra Klasse zu laden, steht nach wie vor offen. Aber als Grundidee fiel mir das hier gerade ein.
Java:
public abstract class Inventory
{

    public abstract String getName();

    public abstract int getID();
}
public class FishingRod extends Inventory implements Comparable<FishingRod>
{
    private final String name = "Fishing Rod";
    private final int id = 1000123;
    @Override
    public String getName()
    {
        return name;
    }
    @Override
    public int getID()
    {
        return id;
    }
 
    @Override
    public int compareTo(FishingRod f)
    {
        if (this.hashCode() > f.hashCode())
        {
            return 1;
        } else if (this.hashCode() < f.hashCode())
        {
            return -1;
        } else
        {
            return 0;
        }
    }
    @Override
    public boolean equals(Object obj)
    {
        if (obj == null)
        {
            return false;
        }
        if (obj == this)
        {
            return true;
        }
        if (!obj.getClass().equals(this.getClass()))
        {
            return false;
        }
        return this.compareTo((FishingRod) obj) == 0;
    }
    @Override
    public int hashCode()
    {
        int hash = 5;
        hash = 83 * hash + Objects.hashCode(this.name);
        hash = 83 * hash + this.id;
        return hash;
    }
}

import java.util.Objects;
public class Chop extends Inventory implements Comparable<Chop>
{
    private final String name = "Chop";
    private final int id = 20000343;
    @Override
    public String getName()
    {
        return name;
    }
    @Override
    public int getID()
    {
        return id;
    }
    @Override
    public int compareTo(Chop o)
    {
        if (this.hashCode() > o.hashCode())
        {
            return 1;
        } else if (this.hashCode() < o.hashCode())
        {
            return -1;
        } else
        {
            return 0;
        }
    }
    @Override
    public boolean equals(Object obj)
    {
        if (obj == null)
        {
            return false;
        }
        if (obj == this)
        {
            return true;
        }
        if (!obj.getClass().equals(this.getClass()))
        {
            return false;
        }
        return this.compareTo((Chop) obj) == 0;
    }
    @Override
    public int hashCode()
    {
        int hash = 5;
        hash = 83 * hash + Objects.hashCode(this.name);
        hash = 83 * hash + this.id;
        return hash;
    }
}


import java.util.Objects;
public class Plummet extends Inventory implements Comparable<Plummet>
{
    private final String name = "Plummet";
    private final int id = 4000234;
    @Override
    public String getName()
    {
        return name;
    }
    @Override
    public int getID()
    {
        return id;
    }
    @Override
    public int compareTo(Plummet p)
    {
        if (this.hashCode() > p.hashCode())
        {
            return 1;
        } else if (this.hashCode() < p.hashCode())
        {
            return -1;
        } else
        {
            return 0;
        }
    }
    @Override
    public boolean equals(Object obj)
    {
        if (obj == null)
        {
            return false;
        }
        if (obj == this)
        {
            return true;
        }
        if (!obj.getClass().equals(this.getClass()))
        {
            return false;
        }
        return this.compareTo((Plummet) obj) == 0;
    }
    @Override
    public int hashCode()
    {
        int hash = 5;
        hash = 83 * hash + Objects.hashCode(this.name);
        hash = 83 * hash + this.id;
        return hash;
    }
}
Java:
package loader;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ReadyToFishing
{

    /**
     * Your equipment you need to go to fishing
     */
    private List<Inventory> inventorys = new ArrayList<>();
    /**
     * Your controllist to check your equipment
     */
    private List<Inventory> control = new ArrayList<>();

   
     public ReadyToFishing(Inventory... invent)
    {
        fill(invent);
        control = fill();
    }
    /**
     * Fill your equipment with your fishing stuff
     * @param inventory fishing stuff
     */
    private void fill(Inventory[] inventory)
    {
        inventorys.addAll(Arrays.asList(inventory));
    }

    /**
     * Your checkinglist for fishing
     * @return
     */
    private List<Inventory> fill()
    {
        List<Inventory> x = new ArrayList<>();
        x.add(new FishingRod());
        x.add(new Chop());
        x.add(new Plummet());
        return x;
    }

    /**
     * If you have everything needed to catch a fish, then go;
     *
     * @return true, if {@code inventorys} contains {@code control}
     */
    String canGoFishing()
    {
        return inventorys.containsAll(control) ? "Can go" : "Something missing";
    }

}
Java:
public class Loader
{

    public static void main(String[] args)
    {
        FishingRod fishingRod = new FishingRod();
        Chop chop = new Chop();

        ReadyToFishing notRealyReady = new ReadyToFishing(fishingRod, chop);
        System.out.println(notRealyReady.canGoFishing());

        Plummet plummet = new Plummet();

        ReadyToFishing butNow = new ReadyToFishing(fishingRod, chop, plummet);
        System.out.println(butNow.canGoFishing());
    }

}
/** Output */
Something missing
Can go
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Parameter Konstruktor plus rechnen Allgemeine Java-Themen 6
M Konstruktor einer Methode Allgemeine Java-Themen 35
M Frage zum Konstruktor Allgemeine Java-Themen 2
B Klassen Objekt erzeugen und Konstruktor aufrufen - Welche Lösung ist besser? Allgemeine Java-Themen 2
J Konstruktor in JSP beim Kompilieren nicht gefunden Allgemeine Java-Themen 3
J Inner class + Leer-Konstruktor Allgemeine Java-Themen 1
P Threads Objekt im Konstruktor anders wie im Run()-Block Allgemeine Java-Themen 10
H Beim Konstruktor "this" Allgemeine Java-Themen 4
K Variablen Konstruktor, unendlich viele Allgemeine Java-Themen 3
T Konstruktor löst exception aus Allgemeine Java-Themen 7
C Klassen und Konstruktor Allgemeine Java-Themen 2
W Threads NullPointer: Konstruktor "zu langsam"? Allgemeine Java-Themen 3
L Klassen Konstruktor soll Objekt anderer Klasse erzeugen Allgemeine Java-Themen 2
M Klassen Klasse Dynamisch laden und Konstruktor aufrufen Allgemeine Java-Themen 1
DStrohma In abstrakter Klasse Konstruktor von Instanz implementieren Allgemeine Java-Themen 11
C Reflektions, Benutzer soll Konstruktor auswählen und Parameter übergeben können Allgemeine Java-Themen 5
S OOP this-Referenz als Konstruktor-Übergabe Allgemeine Java-Themen 8
ruutaiokwu NullPointerException auf member, die per konstruktor gesetzt wird (multithread-kontext) Allgemeine Java-Themen 2
ruutaiokwu auf priv. konstruktor von "aussen" zugreifen? Allgemeine Java-Themen 4
A Methoden laufen im Konstruktor, außerhalb allerdings nicht Allgemeine Java-Themen 2
E Array im Konstruktor übergeben Allgemeine Java-Themen 3
A Reflection Konstruktor Parameter Supertyp Allgemeine Java-Themen 2
X Dynamisch Konstruktor aufrufen Allgemeine Java-Themen 12
J abstrakte Klassen, Konstanten und Konstruktor Allgemeine Java-Themen 9
E Finale Attribute und Konstruktor Allgemeine Java-Themen 3
S Konstruktor ermitteln Allgemeine Java-Themen 3
B Konstruktor wird nicht aufgerufen Allgemeine Java-Themen 4
T class.newinstance + try/catch-konstruktor Allgemeine Java-Themen 6
S Neue Instanz eines Objekts erzeugen - Konstruktor erhaelt Parameter. Allgemeine Java-Themen 5
B Konstruktor - Vererbungsproblem Allgemeine Java-Themen 2
S konstruktor vererben Allgemeine Java-Themen 5
B Problem mit Methodenaufruf in Konstruktor Allgemeine Java-Themen 6
D [SOLVED] Collection wird nicht richtig per Konstruktor übernommen Allgemeine Java-Themen 8
S Instanz in einer Klasse erstellen, und dem Konstruktor die eigene Klasse mitgeben Allgemeine Java-Themen 4
M Konstruktor / statischer Block Allgemeine Java-Themen 13
Ark Konstruktor per Reflection nicht bekannt Allgemeine Java-Themen 4
J Klasse auf Konstruktor oder Methode testen? Allgemeine Java-Themen 3
Junktyz Konstruktor Allgemeine Java-Themen 9
T Schleife im Konstruktor? Allgemeine Java-Themen 9
conan2 super-super-Konstruktor? Allgemeine Java-Themen 3
P static-Methode aus dem Konstruktor aufrufen Allgemeine Java-Themen 6
F Werte von Member-Variablen erst im Konstruktor setzen? Allgemeine Java-Themen 7
MQue zaehlen im Konstruktor Allgemeine Java-Themen 3
V Initialisierung nur im Konstruktor? Allgemeine Java-Themen 14
J Konstruktor-Aufruf nur aus einem bestimmten Package erlauben Allgemeine Java-Themen 5
T Konstruktor von Hashtable unter Java 5.0! Allgemeine Java-Themen 3
M Feld initialisieren, direkt oder Konstruktor Allgemeine Java-Themen 2
D super-Konstruktor ist nicht super ;) Allgemeine Java-Themen 6
A Objektmethode aus Konstruktor aufrufen? Allgemeine Java-Themen 14
7 Konstruktor Allgemeine Java-Themen 12
M Konstruktor, der Excpetions wirft Allgemeine Java-Themen 2
H Super-Konstruktor Allgemeine Java-Themen 7
A Exception in Konstruktor - trotzdem wird Objekt erzeugt! Allgemeine Java-Themen 3
S Konstruktor vererben Allgemeine Java-Themen 9
thE_29 String Konstruktor - Umwandlungsprobleme Allgemeine Java-Themen 5
J Probleme mit dem Konstruktor Allgemeine Java-Themen 8
G Konstruktor-Aufruf nun mit oder ohne Typ? Allgemeine Java-Themen 9
D Kein public Konstruktor Allgemeine Java-Themen 4
K Exception im Konstruktor / Objekt == null Allgemeine Java-Themen 7
S konstruktor nur innerhalb der klasse aufrufbar Allgemeine Java-Themen 5
S konstruktor im interface Allgemeine Java-Themen 5
8u3631984 Strukturiertes Logging : Jedes Feld in eine seperate Zeile - aber wie ? Allgemeine Java-Themen 2
L Hintergrundfarbe jedes spinner-Elements ändern Allgemeine Java-Themen 1
H Scanner soll einen Inputredirect einlesen, liest aber nicht jedes Wort ein. Allgemeine Java-Themen 3
T Properties Datei nicht jedes mal neu schreiben? Allgemeine Java-Themen 2
A JNLP Datei und Aktualisierung nur jedes 2x Allgemeine Java-Themen 3
N Lwjgl 3d Objekt wird schmaler, wenn es sich dreht Allgemeine Java-Themen 0
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
Maxi-JOO Klassen Dummy Objekt in anderen Constructor übergeben Allgemeine Java-Themen 5
el_niiinho13 Objekt auf der Konsole ausgeben lassen Allgemeine Java-Themen 8
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
A Objekt aus anderen Objekten machen Allgemeine Java-Themen 8
SaftigMelo In einem Winkel Objekt bewegen Allgemeine Java-Themen 2
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
H Objekt speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
J Objekt in Bytestream umwandeln Allgemeine Java-Themen 12
J Wie kann ich von Vornherrein einen Fokus auf ein Objekt entfernen? Allgemeine Java-Themen 3
J Information von getSource() Objekt auslesen Allgemeine Java-Themen 1
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
S Variable als Objekt Name Allgemeine Java-Themen 3
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
T Objekt in Array packen Allgemeine Java-Themen 6
K Methodenaufruf mit String / String zu Objekt konvertieren Allgemeine Java-Themen 8
S Neues Objekt darstellen Allgemeine Java-Themen 4
J Best Practice Objekt an alle Klassen verteilen ( Discord Bot ) Allgemeine Java-Themen 7
D Objekt-Suche mit mehreren optionalen Parametern Allgemeine Java-Themen 6
M Klassen Objekt weiter geben Allgemeine Java-Themen 1
L Variablen Eigenes Objekt wie z.B. einen Integer zuweisen Allgemeine Java-Themen 3
S Applet Überprüfen ob ein Objekt angeklickt wurde Allgemeine Java-Themen 2
RalleYTN 3D Objekt Translation basierend auf Rotation (Probleme mit Z Rotation) Allgemeine Java-Themen 0
B Von String zu <Objekt> ||Speichern/Laden Allgemeine Java-Themen 17
G Neues Objekt aus List<JsonObject> mit Stream Allgemeine Java-Themen 4
R Objekt funktioniert nicht auf iOS Allgemeine Java-Themen 15
K Textdatei als Objekt Allgemeine Java-Themen 4
Viktim Classenname zu Objekt Allgemeine Java-Themen 4
P Entity Objekt Methoden vs Service methoden Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben