Я очень новичок в Lambda, и мне хотелось бы, чтобы класс Generic был выполнен так же, как и не общий класс. Возьмем, к примеру, Runnable, он не является общим:
Runnable runnable = () -> {
// code here
}
И у меня был класс Generic, как бы я сделал это в Lambda, как я могу, с не-общим классом?
MyGenericClass<T> generic = ...
Lambdas использует дженерики и типизирует вывод. Настолько, что вывод типа был добавлен в Java 8, чтобы сделать синтаксис более удобочитаемым.
Позволь мне привести пример
// this adds a dynamic reference to this method
Predicate<String> isEmpty = String::isEmpty;
или
// this creates a new lambda static method and
// creates a dynamic reference to that method
Predicate<String> isEmpty = s -> s.isEmpty();
или
Predicate<String> containsX = s -> s.contains("X");
Они используются Stream.filter()
Там пример здесь, где они используют:
Callable<String> c = () -> "Hello from Callable";
а также
List<Employee> list = new ArrayList<Employee>();
Collections.sort(list,
(x, y) -> x.getLastName().compareTo(y.getLastName()));
Это то, что вы ищете?
По существу - лямбды в java 8 используют тип интуиции, который был введен в Java 7 до n-й степени. Это действительно удивительно, насколько эффективно это при разработке типов сложных выражений.
Runnable
не является общим