Вы можете использовать инспекцию для экземпляра флага и показать вам предупреждение/ошибку. Это может быть исключительным.
Чтобы добавить пользовательскую проверку, выполните https://www.jetbrains.com/idea/help/creating-custom-inspections.html, или сделать это:
- Открыть настройки (CTRL + ALT + S) и поиск осмотров.
- В дереве найдите «Общие» и под ним «Инспекция структурного поиска».
- Под описанием вы увидите панель строгости/параметров. Рядом с параметрами нажмите + и добавьте шаблон поиска.
Чтобы настроить проверку на ваш вопрос:
- В поле поиска шаблона, добавить переменную с последующим вызовом метода, например: $ Instance $ .get()
- Нажмите редактировать переменные и выберите $ Instance $ из списка.
- В «Ограничениях выражений» добавьте тип выражения «Необязательно» и примените ограничение в иерархии типов.
Сохраните изменения и выполните осмотр. (CTRL + Shift + Alt + I, тип «Проверка структурного поиска»). Это должно показать вам все экземпляры Optional.get().
Редактировать: В вашем вопросе вы спрашиваете, возможно ли получить ошибку компиляции. Я считаю, что это будет строго зависеть от того, как вы строите свой код. Если вы добавили проверку и установили уровень ошибки на «Ошибка», она должна завершиться неудачей в Make/Compile, но не на «mvn install».
Это тяжелый вид, но вы можете написать свой собственный осмотр и установить его через плагин? Вероятно, более простой подход ... но худший случай ... – vikingsteve
Вы действительно имеете в виду, что вы ожидаете, что каждый сначала вызовет 'Optional.isPresent()'? Это не мое понимание намерения «Факультативный». Если это так, это то же самое, что нужно помнить, чтобы выполнить нулевую проверку, так что вы ничего не получили. Например, как насчет использования 'Optional.map()' - в этом случае ваша проверка будет идентифицировать его как проблему, но она может быть абсолютно безопасной, не назвав сначала 'isPresent()'. – DaveyDaveDave
Я имею в виду, что 'get()' должен вызываться после проверки с 'isPresent()'. Я ничего не говорил о 'map()' или других методах. – Renato