Работа или подавление переменной Try-with-resources не используется предупреждениеJAVA

Программисты JAVA общаются здесь
Anonymous
Работа или подавление переменной Try-with-resources не используется предупреждение

Сообщение Anonymous »

В Java 17 у меня есть сериализатор, который генерирует структуру дерева. Прежде чем генерировать детские организации, я повышаю уровень уклон; После этого я уменьшаю уровень уклон. Обычно это должно быть сделано в попытке / Чтобы сериализатор был оставлен в коррумпированном состоянии, если есть ошибка:

Код: Выделить всё

increaseIndentLevel();
try {
serializeChildren()
} finally {
decreaseIndentLevel()
}
< /code>
Использование Try-with-resources Я создал умный и элегантный маленький подраздел, который гарантирует, что это сделано более свободно: < /p>
protected Closeable increaseIndentLevel() {
indentLevel++;
return Close.by(this::decreaseIndentLevel);
}
< /code>
Close.by()
- мой вспомогательный класс, который создает ближайший , который уменьшит уровень отступления, как и я выше; Я могу использовать это так: < /p>

Код: Выделить всё

try (final Closeable indention = increaseIndentLevel()) {
serializeChildren()
}
< /code>
Unfortunately OpenJDK javac 17 with linting turned on doesn't recognize my cleverness, and instead complains:

[WARNING] auto-closeable resource indention is never referenced in body of corresponding try statement


Я понимаю, что Try-with-resources требует, чтобы я объявил некоторую переменную. Я не могу сказать, что попробовать (ingivenIndEntlevel ()) Например. (Я также могу угадать причину: создатели этой функции недостаточно обобщали и вместо этого создали излишне ограничительные правила для очевидного, 99% использования. Последнее средство, какой идентификатор я использую с @suppresswarnings () , чтобы это предупреждение исчезло в Javac? (Я должен был подавить предупреждение, потому что оно превращает такое красивое решение во что -то такое уродливое.)

Подробнее здесь: https://stackoverflow.com/questions/738 ... ed-warning

Вернуться в «JAVA»