Java Lambda: класс с типом?

1

Я очень новичок в Lambda, и мне хотелось бы, чтобы класс Generic был выполнен так же, как и не общий класс. Возьмем, к примеру, Runnable, он не является общим:

Runnable runnable = () -> {
    // code here
}

И у меня был класс Generic, как бы я сделал это в Lambda, как я могу, с не-общим классом?

MyGenericClass<T> generic = ...
  • 0
    Runnable не является общим
  • 0
    Я знаю, что нет, но что бы я сделал для лямбды, если бы у класса был универсальный тип? Лямбда даже позволяет мне это делать?
Показать ещё 3 комментария
Теги:
java-8
lambda

2 ответа

4

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()

1

Там пример здесь, где они используют:

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-й степени. Это действительно удивительно, насколько эффективно это при разработке типов сложных выражений.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню