Описание тега method-reference

Ссылки на методы являются частью набора функций лямбда-выражения Java 8.
2 ответа

Являются ли трассировки стека менее ориентируемыми при использовании ссылок на методы по сравнению с лямбдами?

Я только что провел быстрый эксперимент в Eclipse. public class StackTractTest { static class Nasty { public Integer toInt() { if (1 == 1) throw new RuntimeException(); return 1; } } @Test public void methodReference() { Stream.of(new Nasty()) .map(…
13 ноя '15 в 11:45
3 ответа

Использование ссылок на методы в экземпляре, который будет определен во время выполнения в Java

Я проверял правила использования ссылок на методы, но написанный мной код не компилировался. Компилятор постоянно говорит мне, что я не могу ссылаться на нестатический метод из статического контекста. Однако в Java-документах прямо написано, что мож…
17 янв '17 в 20:52
2 ответа

Как toArray(Foo[]::new) работает в потоках Java?

Так что это хорошо компилируется: import java.util.stream.Stream; class Foo { void foo() { Object[] foo = Stream.of(new Foo()).toArray(); } } но я не хочу Object[], Я хочу Foo[]Итак, вот мой первый дубль: import java.util.stream.Stream; class Foo { …
1 ответ

Автоматическое сопоставление конструктора в методе по умолчанию

У меня есть PersonFactory Интерфейс следующим образом: @FunctionalInterface public interface PersonFactory<P extends Person> { P create(String firstname, String lastname); // Return a person with no args default P create() { // Is there a way …
2 ответа

Ссылка на метод java 8 за сценой

Мой вопрос лямбда и ссылки на методы все о функциональных интерфейсах. они просто обеспечивают их реализацию. Теперь, когда я пишу: class Apple{ private int weight; private String color; public String getColor() { return color; } public void setColo…
12 фев '17 в 18:12
2 ответа

Ссылка на метод с использованием интерфейса (реализованного несколькими классами) в качестве типа

public interface Intf { int size(); } public class Cls1 implements Intf { public int size() { // implementation 1 } public class Cls2 implements Intf { public int size() { // implementation 2 } Теперь, на какую из двух приведенных выше реализаций бу…
10 окт '16 в 05:29
1 ответ

Доступна ли ссылка на метод для выдачи исключения?

Предположим, у меня есть следующий код: Runnable exceptionHandler = () -> throw new RuntimeException(); Есть ли способ написать его более кратким, доступным сейчас или, возможно, доступным в будущих выпусках Java? Я ожидаю что-то вроде: Runnable …
09 апр '14 в 10:14
2 ответа

Локальные классы с лямбда-выражениями

Как я уже проверял, приведенный ниже код выполняется без проблем. Но я не мог понять логику. Может кто-нибудь объяснить, пожалуйста? public static void main(String[] args) { List<String> london = new ArrayList<>(Arrays.asList("Chinatown"…
2 ответа

Ссылка на метод в Java unil BiFunction

У меня есть вопрос о передаче ссылки на метод в качестве аргумента в функции Java (Util). У меня две функции Function<Value, Output> f1 = (val) -> { Output o = new Output(); o.setAAA(val); return o; }; Function<Value, Output> f2 = (va…
28 янв '16 в 16:56
3 ответа

Передача аргументов в метод ссылки

Учитывая этот метод: private static Integer getVal(Integer a, Integer b){ return a + b; } который можно назвать лямбда-выражением: a -> getVal(1, 2) Есть ли способ превратить это в ссылку на метод, что-то вроде: Class::getVal Спасибо
27 дек '17 в 07:48
1 ответ

Ссылки на метод в Android Studio

Я пытаюсь использовать функцию Java 8 в Android Studio. Конкретно ссылки на метод. Чтобы быть еще более конкретным, ссылка на метод экземпляра конкретного объекта. Использовать формулировку страницы документации Oracle. Мой код обидеть это. Соответс…
2 ответа

Java 8: ссылка метода на статический метод нестатическим способом

Я изучаю новый Stream API для экзамена OCP и обнаружил что-то, чего я не совсем понимаю. Вот мой код: void methodOne() { this.compare(1, 2); // This works fine. Stream.of(1,2,3) .sorted(this::compare); // Compilation error. } static Integer compare(…
15 июн '18 в 09:25
1 ответ

Преобразование лямбда-функции со ссылкой на функцию в Java 7

Я работаю над приложением, которое работает на Java 1.7. Мне нужно переписать некоторый код, который был написан на Java 1.8 с SpringFramework. К сожалению, я не знаком с более новой версией и не знаю, как переписать этот код для работы с Java 7... …
19 июн '17 в 10:45
1 ответ

Практические приложения для ссылок конструкторов Java 8?

Так что я потратил 2 часа, пытаясь найти практический пример ссылок на конструкторы Java 8, который действительно имеет для меня смысл. Дело не в том, что я не понимаю синтаксис или семантику ссылок на конструктор. Но я не могу придумать вариант исп…
2 ответа

Есть ли аналог умножения на Integer::sum?

Начиная с Java 8, Integer класс имеет статичность sum метод, который добавляет два целых числа: public static int sum(int a, int b) { return a + b; } Я могу передать этот метод в функции высшего порядка через Integer::sum который я нахожу более чита…
2 ответа

Невозможно понять поведение: ссылка на метод с лямбда

Рассмотрим ниже код, class DemoStatic { public static Runnable testStatic() { return () -> { System.out.println("Run"); }; } public void runTest () { Runnable r = DemoStatic::testStatic; r.run(); } } public class MethodReferenceDemo { public stat…
11 апр '14 в 21:31
0 ответов

Java 8: вывод типа завершается неудачно при сопоставлении объектов со ссылками на методы

У меня есть массив объектов классов, которые расширяют этот абстрактный класс в переменной handlers: public abstract class RequestHandler { public boolean handleGet(final HttpServletRequest request, final HttpServletResponse response) { return true;…
2 ответа

Функциональный интерфейс как справочник функций

public static void main(String o[]) { Map<String, Integer> map = new HashMap<String, Integer>(); map.put("a", 1); map.entrySet().stream().sorted(Comparator.comparing(Entry::getValue)).forEach(System.out::println); } Выше код строится и р…
05 сен '17 в 10:12
1 ответ

Какая разница между этим::myMethod и ClassName::myMethod?

Я не понимаю разницу между this::myMethod а также ClassName::myMethod когда это экземпляр класса ClassName. Я думал, что в обоих случаях я вызываю метод myMethod и дать myObject что я бегу в качестве аргумента myMethod метод, но я думаю, что есть ра…
02 окт '17 в 07:03
1 ответ

Ссылочный метод с конструктором массива

Я пытался использовать метод ссылки с выражением ArrayType[]::new в следующем примере: public class Main { public static void main(String[] args) { test1(3,A[]::new); test2(x -> new A[] { new A(), new A(), new A() }); test3(A::new); } static void…
15 авг '16 в 11:50