#android #android-studio
#Android #android-studio
Вопрос:
Есть ли простой ярлык в Android Studio для рефакторинга этого:
@GET(WSConstants.ENDPOINT_SINGLE_ACCOUNT)
suspend fun getAccount(@Path(WSConstants.PARAM_ACCOUNT_ID) accountId: String?): Call<Account>
Для:
@GET(ENDPOINT_SINGLE_ACCOUNT)
suspend fun getAccount(@Path(PARAM_ACCOUNT_ID) accountId: String?): Call<Account>
И, во-вторых, считается ли это хорошей практикой? Я думаю, что это выглядит чище.
Ответ №1:
При импорте напишите полный путь к статическим переменным. Например:
import my.package.name.WSConstants.ENDPOINT_SINGLE_ACCOUNT
import my.package.name.WSConstants.PARAM_ACCOUNT_ID
Комментарии:
1. Мне нужен ярлык. Написание полного пути — слишком большая работа
2. Импорт не может быть сокращен. Но после ввода полного пути вы можете использовать константы, как вы просили
3. Я уверен, что в Android Studio должна быть какая-то настройка.
Ответ №2:
AFAIK нет простого решения, чтобы делать то, что вы хотите. Итак:
Решение # 1
Например, нажмите на каждое поле ENDPOINT_SINGLE_ACCOUNT
и нажмите Alt Enter, затем нажмите на первый вариант, который естьAdd import for .... Он заменяет все вхождения выбранного поля на желаемые обозначения в текущем файле.
Решение # 2
Самый короткий способ сделать это — использовать wildcard imports
( *
) при импорте нескольких полей. Это был бы самый высокий уровень сокращения.
import your-package.*
Чтобы воспользоваться преимуществами этой краткости, сначала извлеките свои константы из класса object и поместите их в файл kotlin:
WSConstants.kt
package your-package
const val ENDPOINT_SINGLE_ACCOUNT = "..."
const val PARAM_ACCOUNT_ID = "..."
Затем
-
Нажмите Ctrl ShiftR, чтобы открыть
Replace in Path
окно -
Включите регулярное выражение, нажав
.*
справа от окна -
WSConstants[.*]
Замените пустой строкой, чтобы удалитьWSConstants.
шаблоны в классах
заменить WSConstants
Дополнительные:
Чтобы определить свою собственную политику для организации импорта, вы можете сделать это из:
Файл> Настройки> Редактор> Стиль кода> Kotlin> Импорт (вкладка)
Комментарии:
1. Я удивлен, что нет простого решения, потому что я думаю, что это определенно делает код более читаемым и простым. Но спасибо за это!
2. Спасибо, Джим 🙂 Да, я изучил все связанные документы IntelliJ, чтобы найти подсказку, к сожалению, безуспешно. Я согласен с вами, таким образом, код выглядит более чистым, по крайней мере, из-за удаления ненужных префиксов фрагментация кода происходит меньше.
Ответ №3:
В Java нет механизма сглаживания импорта. Вы не можете импортировать два класса с одинаковым именем и использовать их оба неквалифицированными.
Импортируйте один класс и используйте полное имя для другого, т. е.
import com.text.Formatter;
private Formatter textFormatter;
private com.json.Formatter jsonFormatter;