使用java匿名函数返回值

时间:2016-01-19 01:45:48

标签: java lambda

从C#转换到Java并试图清除一些代码中的一堆Connection泄漏。

为了防止泄漏,我会做类似

的事情
public class DB{
    public interface StatementUser{
         public void useit(Statement cmd);
    }

    public static void UseCommand(StatementUser usingfunc){
        try(Connection cnn = new Connection(...)){
            cnn.open();
            try(Statement stmt = new Statement(cnn)){
                usingfunc(stmt);
            }
        }
    }

    static void main(string[] args){
        int affected = 0;
        DB.useStatement((stmt) -> {
            // THIS STATEMENT IS DISALLOWED
            affected = ... select/update... whatever
        });
        System.out.println("Records: " + affected);
    }
}

我喜欢这个委托,因为它处理清理但仍然将大部分与数据的交互留给了开发人员的创造力。

我认为affected的赋值被认为是访问其范围之外的变量,而不是允许的。所以现在我对如何在Java中执行类似操作感到茫然(我想维护连接/语句对象的通用用法)

我想出的所有东西都让它变得更加丑陋,所以我怀疑我只是走向一条完全无所谓的道路。

这样做的Java方法是什么? (我觉得这看起来可能与我期待的完全不同)

1 个答案:

答案 0 :(得分:3)

编写此代码的另一种方法是这样的:

textarea {
    line-height: 2;
}