Verwendet Try-with-Ressourcen ohne neue Objektinstanz schlechte Form?Java

Java-Forum
Guest
 Verwendet Try-with-Ressourcen ohne neue Objektinstanz schlechte Form?

Post by Guest »

Im Allgemeinen habe ich immer gesehen, dass Try-with-Ressourcen verwendet werden, um ein neues Objekt Instanz zuzuweisen , deren Close () Methode aufgerufen wird, wenn sie ausgeht -OF-SCOPE. < /P>
Soweit ich das beurteilen kann Wenn das außerhalb des SCOPE geht. Daher können Sie es verwenden, um "gepaarte Operationen" zu steuern, z. B. etwas aus einem Pool zuzuweisen und sicherzustellen, dass es zurückgegeben wird. gepoolte Instanz, wenn Sie es nicht mehr benötigen: < /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>
Wird diese schlechte Form angesehen? Es gibt einen großen Nachteil, wenn Sie den oben genannten Ansatz verfolgen. Ich finde, dass die Verwendung in einer Bibliothek eine saubere API erzeugt. mit einem Beispiel. Offensichtlich ist es kein echter Code! :)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post