Jelenlegi hely

15.3. Általános metódusok definiálása és használata

Nem csak a típusokat, a metódusokat is paraméterezhetjük. A statikus és nem statikus metódusoknak épp úgy, ahogy a konstruktoroknak, lehet típus paraméterük.

A metódusok típus paraméter deklarálásának szintaxisa megegyezik az osztályoknál használt szintaxissal. A típusparaméter listát a kerek zárójelek közé kell helyezni, még a metódus visszatérési értékének típusa elé. Például a következő gyűjtemény osztály metódus feltölt egy <? super T> típusú listát T típusú objektumokkal:

static <T> void fill(List<? super T> list, T obj)

Az általános metódusok lehetővé teszik a típus paraméterek használatát, hogy egyértelművé tehesse a típusok kapcsolatát egy vagy több paraméter esetén, egy metódus, vagy annak visszatérési értéke számára (vagy mindkettőnek). Az általános metódusok típus paraméterei általában osztálytól függetlenek vagy interfész-szintű típus paraméterek. A Collections osztály algoritmusainak definíciója sok lehetőséget kínál az általános metódusok használatára.

Az egyetlen különbség az általános típusok és általános metódusok között az, hogy az általános metódusokat hagyományos metódusként hívjuk meg. A típus paramétereket a hívás függvényében állapítjuk meg, ahogy a fill metódus alábbi hívásánál is:

public static void main(String[] args) {
    List<String> list = new ArrayList<String>(10);
    for (int i = 0; i < 10; i++) {
        list.add("");
    }
    String filler = args[0];
    Collections.fill(list, filler);
    ...
}