[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-java-8-chto-takoe-ssylka-na-metod":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":16,"progress":17,"seo":18},338,"chto-takoe-ssylka-na-metod",10,"java-8","Java 8+","☕","Что такое ссылка на метод?","Ссылка на метод (method reference) — это сокращённая запись лямбда-выражения, которое только вызывает уже существующий метод. Вместо `x -> obj.method(x)` записывается `obj::method`. Компилятор самостоятельно подставляет аргументы в вызов.\n\n### Синтаксис\n\n| Вид ссылки | Синтаксис | Эквивалентная лямбда |\n|------------|-----------|---------------------|\n| На статический метод | `ClassName::staticMethod` | `x -> ClassName.staticMethod(x)` |\n| На метод экземпляра (конкретный объект) | `obj::instanceMethod` | `x -> obj.instanceMethod(x)` |\n| На метод экземпляра (произвольный объект данного типа) | `ClassName::instanceMethod` | `(obj, x) -> obj.instanceMethod(x)` |\n| На конструктор | `ClassName::new` | `x -> new ClassName(x)` |\n\n```java\nprivate interface Measurable {\n    int length(String string);\n}\n\nMeasurable a = String::length;\nSystem.out.println(a.length(\"abc\")); \u002F\u002F 3\n```\n\nСсылки на методы потенциально более эффективны, чем лямбды, поскольку предоставляют компилятору дополнительную информацию о типе. Если есть выбор между лямбдой и ссылкой на существующий метод, предпочтение следует отдавать ссылке на метод — код получается короче и выразительнее.\n\n> **На собеседовании:** убедитесь, что различаете два вида ссылок на instance-метод: через конкретный объект (`System.out::println`) и через тип (`String::length`). Это частый уточняющий вопрос.","","junior",[15],"java8",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Что такое ссылка на метод? — Gymterview","Ссылка на метод (method reference) — это сокращённая запись лямбда-выражения, которое только вызывает уже существующий метод. Вместо `x -> obj.method(x)` записы","Ссылка на метод (method reference) — это сокращённая запись лямбда-выражения, которое только вызывает уже существующий м",[15,13],"Ссылка на метод (method reference) — это сокращённая запись лямбда-выражения, которое только вызывает уже существующий метод. Вместо `x -> obj.method(x)` записывается `obj::method`. Компилятор самостоятельно подставляет аргументы в вызов.",true]