«Не удается найти метод получения / установки для поля», вызванный символами, специфичными для языка - PullRequest
0 голосов
/ 25 ноября 2018

Я получаю ошибки «не могу найти получателя / установщика» из таких библиотек, как Room и Firebase, даже если синтаксис верблюжьего случая кажется правильным.Эта ошибка применяется только к полям, имена которых начинаются с «i».

Прописная буква «i» в моем языке - «İ», и оказывается, что компилятор ищет «İ» вместо «I».Так, например, если имя поля равно «id», Room ищет метод с именем «getİd».

Как отключить эту функцию?

Редактировать: да, я могу просто заменить все 'я' на 'İ' или переименовать поля в другое, и это решит эту проблему.Но это просто странно, и я хотел бы остаться в привычном режиме.

ОБНОВЛЕНИЕ: В Android Studio 3.3 мне также нужно изменить I на İ в файлах Gradle, иначе они выдают ошибку.пример: testImplementation to testİmplementation

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Кажется, что это ошибка в генераторе кода IntelliJ IDEA или библиотеках, которые вы используете.Хотя правильное решение - обратиться в службу поддержки IntelliJ IDEA и отправить отчет об ошибке, нам, возможно, придется долго ждать исправления.Между тем, вы можете использовать приведенный ниже обходной путь.

Сделайте как navylover сказал : открыть Диалоговое окно шаблона получения и установки , но не изменяйте шаблон 'IntelliJ Default'.Дублируйте шаблон и замените

#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))

на

#set($name = $StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))
#if($name.charAt(0) == 'i')
    #set($name = 'İ' + $name.substring(1))
#else
    #set($name = $StringUtil.capitalizeWithJavaBeanConvention($name))
#end

Это простой обходной путь для капитализации «i».Примените то же исправление для шаблона Setter.

Полный шаблон должен выглядеть следующим образом:

IntelliJ IDEA modified Getter template for Turkish i character

0 голосов
/ 25 ноября 2018

Вы можете изменить шаблон.Вот класс с именем Test:

public class Test {
    int id;


}

нажмите Alt + Insert и нажмите Getter, появится диалоговое окно enter image description here

нажмите кнопку ...,Вы увидите шаблон: enter image description here

теперь замените на

#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))

на

#set($name = $helper.getPropertyName($field, $project))

теперь имя получателя должно быть getid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...