# Java: Generische Methoden



## wolfclaw (4. September 2007)

Hallo!

Ich würde gerne eine Methode schreiben, die einen Paramter eines bestimmten Typs hat und als Returntype eine Liste, die Elemente des selben Typs enthält, das ganze soll ungefähr so aussehen: 

public List<Typ> getBla(Collection<Typ>) {
    ....
    return List<Typ>;
}

Weiß aber nicht, wie die Syntax dafür aussieht. 

Vielen Dank für eure Antworten, 

Gruß, wolfclaw


----------



## zerix (4. September 2007)

Hallo,

schau mal hier


```
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Vector;


public class GenericMethodExample {
	
	public static void main(String[] args) {
		Collection<String> col = new Vector<String>();
		
		col.add("Hello");
		col.add("World!");
		
		List<String> list = machWas(col);
		
		for(int i = 0, size = list.size(); i < size; i++){
			System.out.println("List: "+list.get(i));
		}
	}

	public static <T> List<T> machWas(Collection<T> col){
		
		List<T> list = new ArrayList<T>();
		
		for (T element: col) {
			
			System.out.println(element);
			
			list.add(element);
		}
		
		return list;
	}
	
}
```


MFG

zEriX


----------



## wolfclaw (4. September 2007)

Vielen Dank für die schnelle Antwort!

Eine Frage hätte ich noch. Irgendwie kann ich glaube ich angeben, dass der Typ von irgendwas erben muss, weißt du vielleicht, wie das geht? 

Beispielsweise: <Typ extends IrgendeineKlasse>


----------



## Romsl (4. September 2007)

```
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Vector;


public class GenericMethodExample {

    public static void main(String[] args) {
        Collection<String> col = new Vector<String>();

        col.add("Hello");
        col.add("World!");

        List<String> list = machWas(col);

        for (int i = 0, size = list.size(); i < size; i++) {
            System.out.println("List: " + list.get(i));
        }
    }

    public static <T extends String> List<T> machWas(Collection<T> col) {

        List<T> list = new ArrayList<T>();

        for (T element : col) {

            System.out.println(element);

            list.add(element);
        }

        return list;
    }
}
```


----------



## zerix (4. September 2007)

Schau mal hier

```
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Vector;


public class GenericMethodExample {
	
	public static void main(String[] args) {
		Collection<B> col = new Vector<B>();
		
		col.add(new B("Hello"));
		col.add(new B("World"));
		
		List<B> list = machWas(col);
		
		for(int i = 0, size = list.size(); i < size; i++){
			System.out.println("List: "+list.get(i));
		}
	}

	public static <T extends A> List<T> machWas(Collection<T> col){
		
		List<T> list = new ArrayList<T>();
		
		for (T element: col) {
			
			System.out.println(element);
			
			list.add(element);
		}
		return list;
	}
}
```


```
public class A{
	private String text = null;
	
	public A(String text) {
		setText(text);
	}

	public String getText() {
		return text;
	}

	public void setText(String text) {
		this.text = text;
	}
	
	public String toString(){
		return text;
	}
}
```


```
class B extends A{
	private int id = -1;
	
	public B(String text) {
		super(text);
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

public String toString(){
		return "id="+id+" text="+getText();
	}

}
```


MFG

zEriX


----------

