Найти использование основного конструктора класса Kotlin

Представьте, что у вас есть очень важный и широко используемый класс в вашем проекте на основе Kotlin. У него есть единственный конструктор, который определен следующим образом:

class MyAwesomeManager(argOne: String, argTwo: String)

По какой-то причине вам нужно быстро найти все варианты использования его конструктора. Вы используете Android Studio (или Intelj IDEA).

Но... нажатие Ctrl + ЛКМ на его имени приводит к куче бесполезных результатов — использование в импорте, вызовы полей сопутствующих объектов и т. д. Все варианты использования class, но не конструктор. То же самое для установки курсора на его имя и нажатия Alt + F7.

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


person AlexeyGorovoy    schedule 15.09.2017    source источник


Ответы (3)


Вы должны поставить знак вставки рядом с открывающей скобкой основного конструктора, но не прямо перед первым параметром. Возможно добавить пробел или разрыв строки:

class MyAwesomeManager<caret>(argOne: String, argTwo: String)
//also works
class MyAwesomeManager(<caret> argOne: String, argTwo: String)

затем вызовите Найти использование. Это должно дать вам только использование вызова конструктора.

Если круглых скобок нет, потому что у класса есть конструктор по умолчанию без аргументов, вы можете временно добавить () после имени класса, а затем продолжить, как указано выше.

person Kirill Rakhman    schedule 15.09.2017
comment
Ну, я думаю, это тоже правильный ответ, но этот метод требует немного лучшего прицеливания :) - person AlexeyGorovoy; 15.09.2017
comment
Небольшая поправка - перед открывающей фигурной скобкой нужно поставить каретку. Если вы поместите его после фигурной скобки, AS скажет, что не может найти использование или ищет использование первого аргумента. - person AlexeyGorovoy; 15.09.2017
comment
@AlexeyGorovoy Я отредактировал ответ. Перед первым аргументом должен быть пробел или разрыв строки. - person Kirill Rakhman; 15.09.2017
comment
Есть ли билет youtrack, чтобы попросить лучший UX здесь? - person Holger Brandl; 06.02.2021

Извините, что так быстро отвечаю на свой вопрос, но я думаю, что нашел решение. В два простых шага:

  1. Дважды щелкните имя класса, чтобы выбрать его.
  2. Ctrl+B, чтобы найти варианты использования (редактировать: Alt+f7 также будет работать)

Я не уверен, что это работает во всех случаях, но это сработало для меня.

person AlexeyGorovoy    schedule 15.09.2017
comment
Обновление: вы также можете использовать Alt+f7 в качестве второго шага. - person AlexeyGorovoy; 15.09.2017
comment
Но в своем вопросе вы сказали, что Alt + F7 также дает вам мусор. Что он? - person Eugen Pechanec; 15.09.2017
comment
Я хотел сказать, что если вы сначала выберете полное имя класса, а затем нажмете Alt+F7, он найдет использование только конструктора. Я отредактирую ответ, чтобы уточнить это. - person AlexeyGorovoy; 15.09.2017
comment
Небольшое примечание: если вы не хотите делать это с помощью мыши, используйте Ctrl+-› для перехода к концу имени класса, когда на нем стоит курсор, затем используйте Ctrl+B. - person A. Kazarovets; 15.09.2018
comment
Alt+F7 показывает использование класса, а не конструктора, но у меня работает Ctrl+B - person Klitos G.; 28.11.2018

Поскольку ваш вызов «Найти использование» (Alt+F7 в OSX) исходит из имени класса Kotlin (которое также является определением конструктора), вы получите больше результатов, чем если бы вы сделали то же самое в конструкторе Java — как Вы видели. Если бы Find Usages не показывала использование класса с этого момента, как еще вы узнали бы, где используется класс?

Делая это на одном из моих собственных классов Kotlin, я получил следующее:

введите здесь описание изображения

Расширение «Создание нового экземпляра» показывает мне использование конструктора.

person Adam S    schedule 15.09.2017
comment
Мне нужно проверить это, но я думаю, что он найдет использование всех конструкторов, а не только основных? - person AlexeyGorovoy; 15.09.2017