# Builder



## HalloOtto (7. Feb 2016)

Hallo ich brauch dringend hilfe mit diese Aufgabe, Ich soll eine generische Methode entwickeln, die eine Liste mit beliebigen Objekten eines festen Typs auffüllt:
a) Java bietet keine Möglichkeit, ein Objekt eines generischen Typs zu erzeugen. Wir wollen deshalb ein Interface Builder<T> erstellen, welches eine Methode T build(int i) zur Verfügung stellt. Dieser Builder kann nun für einen entsprechenden Typ implementiert werden und in der build-Methode neue Objekte erzeugen.
b) Erstellen Sie nun eine Klasse MyCollections und darin eine Methode public static <T> void fill(List<T> list, Builder<T> builder, int count). Diese soll count viele neue Objekte vom Typ T in die übergebene Liste einfügen. Als Parameter soll der build-Methode der Index des aktuell zu erzeugenden Eintrags übergeben werden.
c) Testen Sie Ihre Implementierung aus Aufgabenteil b), indem Sie eine Liste vom Typ Integer mit den Zahlen 0-49 auffüllen lassen. Geben Sie den benötigten Builder als Lambda-Ausdruck an!

Habe leider überhaupt keinen Ansatz.
Bitte um Hilfe.
LG Otto


----------



## kneitzel (8. Feb 2016)

Also gewöhnlich wird vor einer Aufgabe auch das nötige Handwerkszeug durchgenommen. Daher würde ich mal schauen, was ihr zuletzt so an Themen hattet.

Meine Erwartungshaltung wäre, dass ihr die Möglichkeiten von der Reflection behandelt habt.

Damit hast du jetzt ein Stichwort, nach dem Du suchen kannst.


----------



## Flown (8. Feb 2016)

Gib doch mal die Rümpfe an die du erhalten hast. Builder-Interface, MyCollection-Klasse + Methode und dann schauen wir mal wo es hapert.


----------



## kneitzel (8. Feb 2016)

Vergiss meinen Hinweis heute früh. Hab den Punkt a) nicht gut genug gelesen. Reflection ist natürlich Quatsch in dem Zusammenhang. Durch das Interface hast Du ja eine Funktion im Builder, der die Instanzen erzeugen kann und ich war einfach nur total auf der falschen Spur. Sorry für die Verwirrung.


----------



## HalloOtto (8. Feb 2016)

So also ich hab mal angefangen das gerüst zu bauen aber komme net weiter.

```
interface Builder <T>{
           T build(int i);
      }
      public class MyCollections {
          public static <T> void fill (List<T> list, Builder<T> builder, int count){
             
             
          }
      }
```


----------



## nvidia (8. Feb 2016)

HalloOtto hat gesagt.:


> So also ich hab mal angefangen das gerüst zu bauen aber komme net weiter.[...]



Naja, bist doch schon fast fertig. Du sollst jetzt noch count-mäßig viele T mittels des Builders erzeugen und in die Liste einfügen. Also eine for-Schleife in der die build-Methode aufgerufen und das Ergebnis dann der Liste hinzugefügt wird. Für das Hinzufügen wäre die Methode void add(int index, E element) ein Kandidat, da nicht näher spezifiziert ist ob die übergebene Liste leer sein muss, jedoch gesagt wird an der i Position hat das neue Element zu stehen.


----------



## HalloOtto (8. Feb 2016)

```
interface Builder <T>{
           T build(int i);
           void add(int index,T Element);
      }
      public class MyCollections {

      }
      public static <T> void fill (List<T> list, Builder<T> builder, int count){

      }
```
Wo muss ich denn die for schleife überhaupt hinbauen? Hab sie jetzt in die main gebaut aber das klappt net.

```
for (i = 0, i < count, i++){
  list.add();
 System.out.println(i);
```


----------



## nvidia (8. Feb 2016)

HalloOtto hat gesagt.:


> Wo muss ich denn die for schleife überhaupt hinbauen? Hab sie jetzt in die main gebaut aber das klappt net.



Überleg mal weshalb die fill-Methode "fill" heisst...


----------

