Home | History | Annotate | Download | only in helpers
      1 /*
      2  * Copyright 2014 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.hardware.camera2.cts.helpers;
     18 
     19 /**
     20  * Defines an interface for classes that can (or need to) be closed once they
     21  * are not used any longer; calling the {@code close} method releases resources
     22  * that the object holds.</p>
     23  *
     24  * <p>This signifies that the implementor will never throw checked exceptions when closing,
     25  * allowing for more fine grained exception handling at call sites handling this interface
     26  * generically.</p>
     27  *
     28  * <p>A common pattern for using an {@code UncheckedCloseable} resource:
     29  * <pre>   {@code
     30  *   // where <Foo extends UncheckedCloseable>
     31  *   UncheckedCloseable foo = new Foo();
     32  *   try {
     33  *      ...;
     34  *   } finally {
     35  *      foo.close();
     36  *   }
     37  * }</pre>
     38  */
     39 public interface UncheckedCloseable extends AutoCloseable {
     40 
     41     /**
     42      * Closes the object and release any system resources it holds.
     43      *
     44      * <p>Does not throw any checked exceptions.</p>
     45      */
     46     @Override
     47     void close();
     48 }
     49