a. Closeable interface is introduced in Java 1.5, where as AutoCloseable interface is introduced in Java 1.7.
b. Closeable interface extends AutoCloseable interface.
AutoCloseable.java
public interface AutoCloseable {
void close() throws Exception;
}
Closeable.java
public interface Closeable extends AutoCloseable {
public void close() throws IOException;
}
c. Closeable.close method is restricted to throw IOException, where as AutoCloseable.close method can throw any Exception.
d. calling this AutoCloseable.close method more than once may have some visible side effect, unlike Closeable.close which is required to have no effect if called more than once.
Closeable, AutoCloseable and try-with-resources statement
What is a resource?
Any object that implements java.lang.AutoCloseable interface is a Resource.
When you declare the resources using try with resources statement, then the resources will be closed at the end of try-with-resources statement. Following application confirms the same.
ResourcesDemo.java
package com.sample.app;
import java.io.Closeable;
import java.io.IOException;
public class ResourcesDemo {
private static class MyCloseable implements Closeable {
@Override
public void close() throws IOException {
System.out.println("Closing MyCloseable object");
}
}
private static class MyAutoCloseable implements AutoCloseable {
@Override
public void close() throws Exception {
System.out.println("Closing MyAutoCloseable object");
}
}
public static void main(String[] args) {
System.out.println("Start Execution........");
try (MyCloseable myCloseable = new MyCloseable();
MyAutoCloseable myAutoCloseable = new MyAutoCloseable();) {
// Do some work
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("End Execution........");
}
}
Output
Start Execution........ Closing MyAutoCloseable object Closing MyCloseable object End Execution........
You may like
How to call super class method from sub class overriding method?
Can an enum has abstract methods in Java?
Can enum implement an interface in Java?
What happen to the threads when main method complete execution
Why System.out.println() is not throwing NullPointerException on null references?
Why should we restrict direct access to instance properties?
No comments:
Post a Comment