2017-12-03 3 views
-2

Als Beispiel nehmen Sie Folgendes.So rufen Sie die Methode inline während des Konstruktors auf

String[] stringArray = new String[]{"a","b","c","d"}; 

List<String> strings = new ArrayList<>().addAll(stringArray); 

Ich bin mir bewusst, dass ich

Arrays.toList("a","b","c","d"); 

nennen kann, aber dies ist nur ein Beispiel, wo ich möchte eine Methode aufrufen, während das Objekt erstellen (Inline).

Ich kann nicht scheinen, es herauszufinden.

+1

Dieses mit „Aufruf der Methode inline kein Problem während Konstrukteur". Es ist einfach so, dass 'ArrayList.addAll()' kein Array benötigt. –

+0

Abgesehen davon gibt addAll einen booleschen Wert und keine Liste zurück. –

+0

Das hängt von der Implementierung der API ab. Zum Beispiel bietet die Builder-Musterimplementierung diese Art von Verhalten, und StringBuilder ermöglicht Ihnen, den Konstruktor aufzurufen und die append-Methode inline aufzurufen. Beispiel: 'StringBuilder-Builder = neuer StringBuilder (" Hallo ") .app (" Welt ");' – Ele

Antwort

1

Das hängt von der Implementierung der API ab. Zum Beispiel bietet die Builder-Musterimplementierung diese Art von Verhalten, und StringBuilder ermöglicht Ihnen, den Konstruktor aufzurufen und die append-Methode inline aufzurufen.

Zum Beispiel:

StringBuilder builder = new StringBuilder("hello ").append("world"); 

Ein Beispiel für Muster Builder - das ist nur ein Beispiel :-)

SimpleBuilder myBuilder = new SimpleBuilder().withThisWord("Hello ").withThisWord("world").build(); 

System.out.print(myBuilder.toString()); 
+0

Dies ist sehr nahe, aber ich möchte in der Lage sein, diesen Baustil mit den generischen List/Map-Objekten zu verwenden, die Java hat. Ist das möglich, ohne meine eigene Builder-Klasse aufbauen zu müssen (in diesem Fall werde ich mich nur mit der Tatsache beschäftigen, dass ich zwei Zeilen verwenden muss, um das zu erreichen, was ich will ( –