Metoda jako parametr

0

Da się z tych dwóch metod zrobić tą 3 bez używania refleksji i bez tworzenia dodatkowych klass lub interfejsów?

metoda1 () {
if(jakisWarunek) {
		(parametr) -> znajdzParametrWZbiorzeX(parametr).wykonajMetodeNaTymParametrze();
	}
}

metoda2 () {
if(jakisWarunek) {
		(parametr) -> znajdzParametrWZbiorzeY(parametr).wykonajMetodeNaTymParametrze();
	}
}


metoda3 ("określam czy użyć metody znajdzParametrWZbiorzeY lub  znajdzParametrWZbiorzeX") {
if(jakisWarunek) {
		(parametr) -> znajdzParametrWZbiorzeXLubY(parametr).wykonajMetodeNaTymParametrze();
	}
}
0
rubaszny_karp napisał(a):

Lambdy - http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html#overview

A mógłbyś pomóc zbudować taką lambde dla tego prostego przykładu. Próbówałem, coś sam robić. Ale jakoś nie mogę sobie poradzić.
Lambda ma być przy wywołaniu metody w parametrze? No nie mogę sobie nawet wyobrazić tego.

0
public <T,S extends cośtam> void metoda3(Functon<T,S> fun1, Consumer<T> fun2, T parametr){
    S result;
    if(jakisWarunek){
        result = fun1.apply(parameter);
    }else{
        result  = fun2.apply(parameter);
    }
    result.wykonajMetodeNaTymParametrze();
}

// i wywołanie:
metoda3(this::methoda1, this::metoda2, parametr);

1 użytkowników online, w tym zalogowanych: 0, gości: 1