PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verkettung von Konstruktoren



BinEinGast
25-07-2008, 16:29
Hallo Gemeinde,

ich habe ein Problem zwei Konstruktoren zu verketten. Folgendes Minimalbeispiel demonstriert das Problem:



[...]
public K(T t1, T t2, T t3) {
this({t1, t2, t3});
}

public K(T[] t) {
// Initialisiert die Objektvariablen ausgehend von t
}
[...]


Soll heissen ich habe zwei Konstruktoren: Einem übergebe ich ein paar Werte einzeln (K1), einem alle Werte in einem Array (K2). K2 deutlich einfacher zu implementieren.

Der o.g. Code funktioniert leider nicht. Die Fehlermeldung ist:


- Syntax error on token "this", invalid AnnotationName
- Syntax error, insert "EnumBody" to complete BlockStatements
- Syntax error, insert "enum Identifier" to complete EnumHeader


Folgender code


[...]
public K(T t1, T t2, T t3) {
K({t1, t2, t3});
}
[...]

resultiert in der Fehlermeldung


- Syntax error on token "K", @ expected before this token
- Syntax error, insert "EnumBody" to complete BlockStatements
- Syntax error, insert "enum Identifier" to complete EnumHeader


Ich weiss mir auch nicht wirklich zu helfen, da der Aufruf eines anderen Konstruktors imho immer die erste Anweisung im Konstruktor sein muss.

Daher meine Frage(n):
Hat jemand eine mehr oder weniger elegante Lösung für das Problem? Was heisst eigentlich @ vor einem Konstruktor?

Danke im Voraus,
Gruesse,
Benjamin

BLUESCREEN3D
25-07-2008, 21:01
this({t1, t2, t3});
Du musst ein anonymes Array erstellen:

this(new T[] {t1, t2, t3});