Meine eigene FIFO-Warteschlange-Klasse für meine eigenen class-Objekt, um ihn zu füllen?
Ich versuche, eine FIFO-Warteschlange, die gefüllt ist mit meiner eigenen Klasse-Objekt.
Ich fand das Beispiel aber, wenn ich ersetzen < E > mit < PCB > es funktioniert nicht:
import java.util.LinkedList;
public class SimpleQueue<E> {
private LinkedList<E> list = new LinkedList<E>();
public void put(E o) {
list.addLast(o);
}
public E get() {
if (list.isEmpty()) {
return null;
}
return list.removeFirst();
}
public Object[] getAll() {
Object[] res = new Object[list.size()];
for (int i = 0; i < res.length; i++) {
res[i] = list.get(i);
}
list.clear();
return res;
}
public E peek() {
return list.getFirst();
}
public boolean isEmpty() {
return list.isEmpty();
}
public int size() {
return list.size();
}
}
- Generika werden sollten "allgemein". Zu wollen, ändern Sie den Typ der variable name
PCB
macht es scheinen, wie Sie eine bestimmte Art im Sinn, als einen parameter. In jedem Fall werden Sie wahrscheinlich nur aus einer Art, wenn Sie haben eine Suche-und-ersetzen; nichts ist syntaktisch falsch mit der Verwendung von "PCB", es sieht einfach hässlich aus. - Wie ersetzt man
E
mitPCB
? - "Es funktioniert nicht". Was nicht funktioniert? Lässt es sich nicht kompilieren?
- Und wenn es nicht kompilierbar ist, was die Fehlermeldung und wo im code tritt der Fehler manifestieren. Wenn es kompiliert, welches Verhalten sehen Sie? Wir können nicht wirklich helfen bei deinem problem, wenn nicht, geben Sie uns die notwendigen Informationen. Ich würde vorschlagen, Lesung catb.org/esr/faqs/smart-questions.html als Referenz auf, wie Fragen zu stellen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
E
ist ein Typ-parameter. In einfachen Worten, können Sie erwägen, es als 'Vorlage', die verwendet werden können zum erstellen einer Warteschlange halten kann, der Instanzen einer bestimmten Klasse.Können Sie eine Warteschlange erstellen von Ihre
PCB
Objekte wie folgt:Java Generics FAQs ist eine gute Ressource, wenn Sie möchten, erfahren Sie mehr über die Java-generics.
<E>
mit<PCB>
im Java-Quellcode fürSimpleQueue
. Wenn Sie instanziiertSimpleQueue
wie in meiner Antwort, warum es nicht funktioniert? Ich habe es ausprobiert und es scheint zu funktionieren (einput
undget
scheint zu funktionieren OK, aber ich kann etwas fehlen). Haben Sie einen Kompilierungsfehler oder stack-trace?SimpleQueue
Klasse in eine neue Java-Quellcode-Datei, und es kompiliert in Ordnung. Ich bin auch in der Lage zu instanziieren ist es so wie in meiner Antwort. Welches problem haben Sie? Eine Zusammenstellung der Fehler?Die Sonne generische tutorial sagt Folgendes:
So, es kann nicht das problem sein, dass Sie es geändert
PCB
.Aber wenn
PCB
ist die einzige Klasse, von der Sie möchten, um Objekte zu speichern, die Sie nicht haben, um eine generische Klasse. Entfernen Sie einfach<PCB>
aus Ihrer Klasse definition-Zeile und ersetzen Sie alleE
's mitPCB
: