Java: Generische Methoden

wolfclaw

Grünschnabel
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
 
Hallo,

schau mal hier

Java:
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
 
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>
 
Java:
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;
    }
}
 
Schau mal hier
Java:
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;
	}
}

Java:
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;
	}
}

Java:
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
 
Zurück