Возникают проблемы с пониманием функции Java 8 < >

JavaScript использует значения двойной точности с плавающей запятой, то есть полную точность 53 бит, но вам нужно

ceil(lb 714341252076979033) = 60

битов, чтобы точно представить это значение.

Ближайшая точно представимая число 714341252076979072 (записать исходный номер в двоичном формате, заменить последние 7 цифр на 0 и округлить, потому что наивысшая замещенная цифра была 1).

Вы получите 714341252076979100 вместо этого числа, поскольку ToString(), как описано ECMA-262, §9.8.1 работает с полномочиями в десять и по 53-битной точности, все эти числа равны.

0
задан Mark Rotteveel 31 March 2019 в 08:34
поделиться

2 ответа

Очень просто и без объяснения преимуществ использования Function s, вы можете представить себе, что ваша функция является аналогом:

HashSet<String> anonymousMethod(String x) {
    return doSomething(x);
}

... который находится анонимно в вашем функциональный объект.

0
ответ дан mle 31 March 2019 в 08:34
поделиться

Его можно заменить на анонимный класс:

Function<String, HashSet<String>> asSet = new Function<>() {
    @Override
    public HashSet<String> apply(String s) {
        return new HashSet<>() {{
            do_something(s);
        }};
    }
};

Вы просто реализуете метод apply из Function, который представляет собой функциональный интерфейс :

[117 ] Обратите внимание, что экземпляры функциональных интерфейсов можно создавать с помощью лямбда-выражений, ссылок на методы или ссылок на конструкторы.

Подробнее Что такое функциональный интерфейс в Java 8?

0
ответ дан Ruslan 31 March 2019 в 08:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: