是否可以创建一个File类型的对象,我后来想写入它,有一个最终声明?我想将它传递给Runnable
内部班级。
答案 0 :(得分:3)
final
声明允许您写入/读入,但不能更改对象的引用。
final File fileRef = new File("/path/to/my/file.txt");
fileRef = new File("/new/path/to/file"); // illegal
答案 1 :(得分:2)
没有问题,final
并不意味着对象本身无法改变其状态。它只是意味着不能重新分配变量。所以它适用于不同的东西。
除此之外,File
只是文件系统文件或文件夹的抽象表示。您没有通过File
对象进行书写,而是使用它来打开流(例如FileWriter
)。
答案 2 :(得分:2)
是。创建变量final
意味着您无法将其更改为指向其他对象。但是,你可以完全按照它所指向的对象做任何你想做的事。
final File file = new File("foo");
Runnable r = new Runnable() {
public void run() {
file.renameTo("bar"); // Cool.
file.delete(); // Cool.
file = new File("bar"); // Whoa. Not cool.
}
};
答案 3 :(得分:1)
来自File
类的对象是来自真实硬盘的文件或目录的抽象表示。它不是物理文件或文件夹。
如果您将变量标记为final
,则无法重新分配。就这样。将变量标记为final
不会使物理文件不可变。如果将Runnable
创建为匿名类,并且File
变量是方法(参数或局部变量)的本地变量,那么是。否则,没有。