java - 关闭资源文件的泛型方法

标签 java generics

我有游标、输入流、输出流,我不是对每个流执行 .close() ,而是对它们调用一种方法来关闭它们。

我尝试过类似的事情:

private static void closeResource ( Object<T>  item )
    {
        try
        {
            if ( item != null )
            {
                item.close();
            }
        }
        catch ( Exception e )
        {
            throw new RuntimeException( e );
        }
    }

它不起作用..对象不是通用的。

最佳答案

  1. Object不是通用类型,因此您不能使用 Object<T> .
  2. Object类(class)没有close其中定义的方法。

面向泛型的解决方案是定义一个 generic method类型参数绑定(bind)到 Closeable声明 close 的接口(interface)方法:

private static <T extends Closeable> void closeResource ( T  item )
{
    try
    {
        if ( item != null )
        {
            item.close();
        }
    }
    catch ( Exception e )
    {
        throw new RuntimeException( e );
    }
}

关于java - 关闭资源文件的泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31355905/

相关文章:

java - 该模块尚未部署[netbeans+glassfish]

java - 将 ubuntu 升级到 19.04 后无法运行 apache ignite

java - 为什么这个 Java 代码不起作用?!通用堆栈

java - 如何在Java中创建通用数组?

c# - 运算符 == 不能应用于 C# 中的泛型类型吗?

java - 连接到 Google Play 服务时访问未配置错误

java - While 循环在 ResultSet.execute 之后终止

Javapoet 和泛型类声明

c# - 其中 t : multiple classes

JAVA-Apache BEAM-GCP : GroupByKey works fine with Direct Runner but fails with Dataflow runner