Wie sagten Sie, dass Sie nichtGenerika verwenden möchten, können Sie Arrays dynamisch über Array#newInstance
(documentation) erstellen. Hier ist Ihre angepassten Code:
public class MyArrayList implements MyList {
private Object[] theList;
public MyArrayList(Object type) {
// Adjust as you like
int size = 0;
// Dynamically create array of type "type"
theList = (Object[]) Array.newInstance(type.getClass(), size);
}
}
Da Sie nicht wissen, die Klasse bei der Kompilierung nur als Object[]
verwenden kann, aber es ist nur Elemente der wahren Art von type
zur Laufzeit ermöglicht, sobald der Typ bekannt, nicht beliebig Object
s.
anzumerken, dass Arrays sind von fester Größe . Sie können nicht einfach Elemente hinzufügen, die Größe ist immer fest und muss im Voraus bekannt sein. Wenn Sie eine dynamischere Struktur benötigen, verwenden Sie etwas wie List
(ArrayList
oder LinkedList
zum Beispiel).
Sie können dann nur nicht vergessen, das Objekt type
gegeben und wenn ein Benutzer ein Element hinzuzufügen versucht, überprüfen Sie für element instanceof type
und nur hinzufügen, wenn das true
zurückgibt, andernfalls eine Ausnahme wie IllegalArgumentException
oder so werfen.
Oder alternativ, wie gesagt, eine gute feste Größe für Ihr Array einstellen. Sie können diese Auswahl auch dem Benutzer geben, indem Sie in Ihrem Konstruktor einen Parameter size
angeben.
Verwenden Sie Generika und Graben Sie den Konstruktor vollständig. – luk2302
* "und einen Kompilierfehler bekommen" * - schreiben Sie uns immer den vollen Fehler, den Sie bekommen. Andernfalls werden Sie Ihr Publikum auf Leute reduzieren, die sofort wissen, was das Problem ist. – Zabuza
@abovady Wenn ein Benutzer Ihre Frage beantwortet, akzeptieren Sie auch seine Antwort ([Antworten annehmen: Wie funktioniert es?] (Https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer- Arbeit)). Wenn nicht, dann geben Sie bitte an, was unbeantwortet bleibt, dies ist ein wichtiger Teil von StackOverflow, vielen Dank. – Zabuza