Java: Статические переходные поля

Я только что узнал, что в Java можно объявить поле 'static transient' - компилятор не жалуется. Это никоим образом не кажется полезным, поскольку, как мы все знаем, статические поля не сериализуются.

Но мне интересно, действительно ли существует случай, когда «статический переходный процесс» { void Open (); объект Read (); void Close (); } класс MyImplementation: IMyInterface { public void Open () {/ * создает одноразовый класс * /} // ... public void Close () {/ * ...

interface IMyInterace
{
void Open();
object Read();
void Close();
}

class MyImplementation : IMyInterface
{
public void Open() { /* instantiates disposible class */ }
//...
public void Close() { /* calls .Dispose(); */ }

}

Есть ли хороший способ справиться с ситуацией такого типа, чтобы гарантировать, что одноразовые экземпляры внутри класса будут вызваны? (Для вызывающих абонентов нет сигнала о том, что они должны вызвать Close, кроме как в документации.) Реализации IMyInterface не обязательно инкапсулируют экземпляры IDisposible и закрываются и повторно открываются повторно в течение всего времени существования приложения.

Я думаю сделать это:

  • Реализуйте IDisposible в MyImplementation.
  • Установите Dispose () на вызов Close ().
  • Добавьте вызов Close () или Dispose () к начало Open для обеспечения предыдущего вызов был закрыт.

Пользователи IMyInterface не знают, какую реализацию они используют, поэтому я не уверен, какое значение имеет создание MyImplementation одноразовым, и, опять же, не все реализации будут инкапсулировать IDisposibles.

5
задан Paul 30 December 2010 в 19:37
поделиться