Элементарный пример лямбда выражения

223
14 июля 2018, 00:30

В книге Шилдта приводится элементарный пример использования лямбда-выражения, где метод

double myMeth(){ return 98.6; }

заменяется

() -> 98.6;

Я так понимаю, что приводимый выше пример метода является частной реализацией, некого функционального интерфейса. Я попытался запустить этот пример, но почему-то у меня данное значение не возвращается как double, а выводится ссылка на объект экземпляра моего интерфейса. Что я делаю не так?

public interface FuncInterface {
    double myMeth (); 
}

и

public class Main {     
    public static void main(String[] args) {
        FuncInterface n = () -> 98.6;
        System.out.println(n);
    }
}

Результат:

first.pack.Main$$Lambda$1/1418481495@87aac27

Спасибо!

Answer 1

В Вашем случае можно было просто воспользоваться Supplier:

Supplier<Double> n = () -> 98.6;
System.out.println(n.get());

Supplier - это тип функционального интерфейса, который предоставляет результат заданного типа, но при этом не принимает аргументов - в точности то, что нужно для Вашей функции double myMeth(){ return 98.6; } .

И Вы также можете заглянуть в исходник этого интерфейса - аналог того, как должен выглядеть Ваш FuncInterface, если Вы хотите реализовать его сами:

package java.util.function;
@FunctionalInterface
public interface Supplier<T> {
    T get();
}

и, соответственно, результат получается аналогично n.get() (для Supplier) - n.myMeth() (для FuncInterface).

Answer 2

Вот так:

    System.out.println(n.myMeth());
READ ALSO
Как передать один аргумент в метод вместо 3 определенных

Как передать один аргумент в метод вместо 3 определенных

Когда пытаюсь скомпилировать код, вижу такую ошибку: "Expected 3 arguments, but got 1" на мутод "refactorStudent" и "refactorInfo", подскажите как пофикситьДа и вообще,...

251
Как проитерировать объект и получить на выходе новый с Object.keys()

Как проитерировать объект и получить на выходе новый с Object.keys()

У меня есть на входе объект, как вернуть на выходе измененный объект на основе сущствующего?

245
Переход к другому файлу JS

Переход к другому файлу JS

UPD Есть файл indexhtml и index2

267