import java.util.List; import java.util.Set; import java.util.function.Function; class Test { void f(List> list) { foo(list.get(0)); } private T foo(I id) { return null; } interface I { } } class Test1 { private static void getMarketDataValues(ScenarioMarketData marketData, Set> ids) { ids.add(bar(marketData::getValue)); } interface ScenarioMarketData { MarketDataBox getValue(MarketDataId id); } interface MarketDataBox { } interface MarketDataId { } static T bar(Function valueExtractor) { return null; } }