Использование Try-with-resources без нового экземпляра объекта плохой формы?JAVA

Программисты JAVA общаются здесь
Anonymous
Использование Try-with-resources без нового экземпляра объекта плохой формы?

Сообщение Anonymous »

Обычно я всегда видел, как Три-в ресурсах используется для распределения метода нового объекта , чей close () вызывается, когда он выходит -of-scope. < /p>
Насколько я могу судить, создание нового объекта не является требованием, а синтаксис Try-with-resources просто нуждается в локальной переменной, чтобы вызовать Close () на Когда это выходит из строя. Поэтому вы можете использовать его для управления «парными операциями», такими как выделение чего -то из пула и убедиться, что оно возвращается. Объединенный экземпляр, когда вам больше не нужно: < /p>
// init
class MyHandle implements AutoCloseable {
boolean inUse = false;
public MyHandle allocate() {
inUse = true;
return this;
}

public void close() {
inUse = false;
}
}

MyHandle[] pool = new MyHandle[POOL_SIZE];
for (int i = 0; i < pool.length; i++) {
pool = new MyHandle(i);
}

// allocate
MyHandle allocateFromPool() {
for (int i = 0; i < pool.length; i++) {
if (!pool.inUse)
return pool.allocate();
}
throw new Exception("pool depleted");
}

// using resources from the pool

try (MyHandle handle = allocateFromPool()) {
// do something
}
// at this point, inUse==false for that handle...
< /code>
Это считается плохой формой? Есть какой -то серьезный недостаток при подходе к подходу выше. Я обнаружил, что использование этого в библиотеке создает чистый API. с каким -то примером. Очевидно, это не настоящий код! :)

Подробнее здесь: https://stackoverflow.com/questions/386 ... e-bad-form

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