有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java问题:“用作trywithresources资源的变量应该是final或实际上是final”

在我看来,我使用了try with resources,因此我不必在try block中手动关闭资源。因此,在制作FileWriter的情况下,我不必尝试,然后捕捉,最后在中关闭它,但只要这样做:

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
        }
    }
} 

我唯一的目标是(“因为我懒惰”)使用资源的引用自动关闭资源。不幸的是,它没有完全起作用。如何更好地理解我为什么被引用警告


共 (0) 个答案