Mam taki kawalke kodu:

List<?> getFilteredTransactions(List<Transaction> transactions, Class transactionClass){
     transactions.stream()
                .filter(t -> transactionClass.isInstance(t))
                .map(t -> (transactionClass.cast(t)))
                .collect(Collectors.toList());

//return transaction po pewnych dodatkowych modyfikacjach
}

W jaki sposob moge zrocic liste konkretnie typu transactionClass? (Chodzi mi o List<?> gdzie ? chce zamienic na przekazana w parametrze klase transactionClass)

Do pelnego obrazu dodam, ze uklad klas wyglada mnie wiecej tak:

class Transaction {}
class SecurityTransaction extends Transaction{}
class CashTransaction extends Transaction {}
//...

Chcialabym miec jedna generyczna metode, zamiast np. getFilteredCashTransactions, getFilteredSecurityTransactions

EDIT:
Zmodyfikowalam troche kod, ale nie wiem czy to najlepsze rozwiazanie?

  private <T> List<T> getFilteredTransactions(int numberOfMonths, List<Transaction> transactions, Class<T> transactionClass) {
        List<Transaction> filtered = transactions.stream()
                .filter(t -> transactionClass.isInstance(t))
                .collect(Collectors.toList());

        return Collections.unmodifiableList(transform(filtered)
             .stream()
             .map(t -> transactionClass.cast(t))
             .collect(Collectors.toList()));
    }