我有游标,输入流,输出流,而不是每个都使用.close(),我在它们上面调用一个关闭它们的方法。
我尝试过类似的东西:
private static void closeResource ( Object<T> item )
{
try
{
if ( item != null )
{
item.close();
}
}
catch ( Exception e )
{
throw new RuntimeException( e );
}
}
它不起作用。对象不是通用的。
答案 0 :(得分:2)
所有流媒体类(InputStream
,OutputStream
和朋友)实施Closable
界面(实际上定义 .close()
方法所有工具),所以你可以这样做:
private static void closeResource (Closable item ) { .. }
答案 1 :(得分:2)
Object
不是通用类型,因此您无法使用Object<T>
。Object
类中没有定义close
方法。面向泛化的解决方案是使用绑定到Closeable
接口的类型参数定义generic method,该接口声明close
方法:
private static <T extends Closeable> void closeResource ( T item )
{
try
{
if ( item != null )
{
item.close();
}
}
catch ( Exception e )
{
throw new RuntimeException( e );
}
}