You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AutoCloseable.java 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
  3. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4. *
  5. * This code is free software; you can redistribute it and/or modify it
  6. * under the terms of the GNU General Public License version 2 only, as
  7. * published by the Free Software Foundation. Oracle designates this
  8. * particular file as subject to the "Classpath" exception as provided
  9. * by Oracle in the LICENSE file that accompanied this code.
  10. *
  11. * This code is distributed in the hope that it will be useful, but WITHOUT
  12. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  14. * version 2 for more details (a copy is included in the LICENSE file that
  15. * accompanied this code).
  16. *
  17. * You should have received a copy of the GNU General Public License version
  18. * 2 along with this work; if not, write to the Free Software Foundation,
  19. * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20. *
  21. * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22. * or visit www.oracle.com if you need additional information or have any
  23. * questions.
  24. */
  25. package java.lang;
  26. /**
  27. * A resource that must be closed when it is no longer needed.
  28. *
  29. * @author Josh Bloch
  30. * @since 1.7
  31. */
  32. public interface AutoCloseable {
  33. /**
  34. * Closes this resource, relinquishing any underlying resources.
  35. * This method is invoked automatically by the {@code
  36. * try}-with-resources statement.
  37. * <p>
  38. * <p>Classes implementing this method are strongly encouraged to
  39. * be declared to throw more specific exceptions (or no exception
  40. * at all, if the close cannot fail).
  41. * <p>
  42. * <p>Note that unlike the {@link java.io.Closeable#close close}
  43. * method of {@link java.io.Closeable}, this {@code close} method
  44. * is <em>not</em> required to be idempotent. In other words,
  45. * calling this {@code close} method more than once may have some
  46. * visible side effect, unlike {@code Closeable.close} which is
  47. * required to have no effect if called more than once.
  48. * <p>
  49. * However, while not required to be idempotent, implementers of
  50. * this interface are strongly encouraged to make their {@code
  51. * close} methods idempotent.
  52. *
  53. * @throws Exception if this resource cannot be closed
  54. */
  55. void close() throws Exception;
  56. }