Hi Leute, ich hab eine Frage: Wo genau liegt der Unterschied zwischen dem Erzeugen einer neuen Instanz (new..) und dem Import von einer Klasse, um davon dann ein Objekt in einer anderen Klasse erzeugen zu können?
Folgendes: Ich habe ein Java-Projekt, dass mehrere Packages hat. In einem Package namens "utils" liegt eine Klasse namens "GenerList". In einem anderen Package liegen 2 "Dinge": Einmal eine Klasse namens "StockManger" und einmal ein Interface namens "StockItem".
Hier mal der Code aus der Klasse StockManager:
package bookstore.stock;
import bookstore.utils.GenericList;
/*
* Diese Klasse ist (beispielhaft) für die Überwachung
* der Lagerbestände und deren Gesamtgewicht zuständig.
* (damit das Regalbrett nicht bricht o.ä.)
*/
public class StockManager {
/*
* Damit eine Datenstruktur benutzt werden kann, die unsere
* Objekte verwaltet, wurde die StringList aus einer vergangenen
* Sitzung zu umprogrammiert, dass jetzt beliebige Datentypen
* damit verwendet werden können. Das geschieht mit Generics
* (die Typ-Angaben in den spitzen Klammern). Wir sehen uns
* Generics später noch genauer an, deshalb können sie hier
* vorerst ignoriert werden.
*/
private GenericList<StockItem> stock;
public StockManager() {
//neue Instanz der Liste erzeugen
this.stock = new GenericList<StockItem>();
}
/*
* Fügt der Liste ein StockItem hinzu
*/
public void addStockItem(StockItem item){
stock.add(item);
}
/*
* Gibt das Gesamtgewicht aller StockItems im Lager zurück
*/
public double getTotalItemWeight() {
double weight = 0;
for (int i = 0; i < stock.size(); i++) {
weight += stock.get(i).getWeight();// Woher kommt das "i"?
}
return weight;
}
}
Frage: Wieso kann hier die GenericList via import erzeugt werden? Ich dachte man müsste immer eine "Sache" via new Operator instanziieren. Zudem kann ich auf StockItem zugreifen. Warum? Es liegt zwar im selben Package aber müsste ein Objekt hierfür nicht auch erst via new erzeugt werden?
Stattdessen steht da "private GenericList<StockItem> stock; " und es scheint zu klappen. Wo genau liegt hier der Unterschied? Wann muss man also new verwenden und wann geht so was wie da oben? Hat es was mit Generics im Allgemeinen zu tun?
Ich danke euch schon mal im Voraus für eure Antwort!
Folgendes: Ich habe ein Java-Projekt, dass mehrere Packages hat. In einem Package namens "utils" liegt eine Klasse namens "GenerList". In einem anderen Package liegen 2 "Dinge": Einmal eine Klasse namens "StockManger" und einmal ein Interface namens "StockItem".
Hier mal der Code aus der Klasse StockManager:
package bookstore.stock;
import bookstore.utils.GenericList;
/*
* Diese Klasse ist (beispielhaft) für die Überwachung
* der Lagerbestände und deren Gesamtgewicht zuständig.
* (damit das Regalbrett nicht bricht o.ä.)
*/
public class StockManager {
/*
* Damit eine Datenstruktur benutzt werden kann, die unsere
* Objekte verwaltet, wurde die StringList aus einer vergangenen
* Sitzung zu umprogrammiert, dass jetzt beliebige Datentypen
* damit verwendet werden können. Das geschieht mit Generics
* (die Typ-Angaben in den spitzen Klammern). Wir sehen uns
* Generics später noch genauer an, deshalb können sie hier
* vorerst ignoriert werden.
*/
private GenericList<StockItem> stock;
public StockManager() {
//neue Instanz der Liste erzeugen
this.stock = new GenericList<StockItem>();
}
/*
* Fügt der Liste ein StockItem hinzu
*/
public void addStockItem(StockItem item){
stock.add(item);
}
/*
* Gibt das Gesamtgewicht aller StockItems im Lager zurück
*/
public double getTotalItemWeight() {
double weight = 0;
for (int i = 0; i < stock.size(); i++) {
weight += stock.get(i).getWeight();// Woher kommt das "i"?
}
return weight;
}
}
Frage: Wieso kann hier die GenericList via import erzeugt werden? Ich dachte man müsste immer eine "Sache" via new Operator instanziieren. Zudem kann ich auf StockItem zugreifen. Warum? Es liegt zwar im selben Package aber müsste ein Objekt hierfür nicht auch erst via new erzeugt werden?
Stattdessen steht da "private GenericList<StockItem> stock; " und es scheint zu klappen. Wo genau liegt hier der Unterschied? Wann muss man also new verwenden und wann geht so was wie da oben? Hat es was mit Generics im Allgemeinen zu tun?
Ich danke euch schon mal im Voraus für eure Antwort!