Ich möchte eine parametrisierte (generische) Klasse MyType<T>
und seine Erbauer erstellen. Der Builder verfügt über einige Methoden, die den Typ T
und einige Methoden, die den Typ verwenden, ignorieren. aber es scheint, wie mit diesem Muster Ich habe die T
Erklärung wiederholen:Java-Typ Inferenz in Builder-Muster
how to omit this declaration?
|
V
MyType<String> myType = Builder.<String>of()
.method1(argument_can_be_of_any_type)
.method2(argument_must_be_of_type_T = String)
.build();
ist es möglich, einige Java-Syntax Tricks oder andere Design-Muster zu verwenden, um die zweite Typdeklaration zu verzichten und die API benutzerfreundlicher machen? wie zum Beispiel:
List<String> aList = Lists.emptyList();
oder
List<String> aList = new LinkedList<>();
ich will keine Reihenfolge von Methoden im Builder erzwingen
Bitte poste 'Builder' Klasse. – saka1029
Muss das Argument für method2 vom Typ String sein? (Mit anderen Worten, können wir den eventuellen Typ des Rückgabewerts von build() aus diesem Argument ableiten oder kann es einfach irgendetwas sein? – DeathB4Decaf
Relevant: https://stackoverflow.com/questions/9058430/why-doesnt-immutablemap -builder-build-pick-the-correct-type-Parameter – shmosel