问题出现:“用作资源尝试资源的变量应该是最终的,或者实际上是最终的”

问题描述

从我的角度来看,我对资源使用 try ,因此不必在 try块中手动关闭资源。因此,在制作FileWriter的情况下,我不必尝试,然后 catch 并在 finally 中将其关闭,但是只需这样做:

void m1(){
        try(FileWriter fileWriter = new FileWriter ("test.txt")) {
            //some operations
        }catch (IOException ioException){
            //some code
        }
    }

但是,如果我有一个类引用已经实例化的FileWriter怎么办?然后我遇到了问题。我认为我在这个用例中有一个很大的“漏洞”。有人可以指出我在想什么吗?我尝试这样做:

public class Test {
    private FileWriter fileWriter;

    public Test (FileWriter fileWriter) {
        this.fileWriter = fileWriter;
    }

    public void m1 () {
        try(fileWriter) { //compile error
//Says:Variable used as a try-with-resources resource should be final or effectively final
        }catch (IOException ioe){
            //some code
        }
    }
} 

我唯一的目标是(“因为我很懒”)使用引用自动关闭资源。不幸的是,它并没有奏效。如何更好地理解为什么我会收到警告?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)