Java:为什么不能在一个语句中声明引用变量,而在该类的另一语句中创建引用对象?

问题描述 投票:0回答:2
// That doesn't work: 

import java.io.File;

public class Test {
    File file1;
    file1 = new File("path");
}

//--------------------------------------

// The following works:

import java.io.File;

public class Test {
    File file1 = new File("path");
}

我不明白为什么第一个版本不可行。我还尝试了一个int值(我认为这不是一个对象):

//Also doesn't work:

public class Test {
    int number;
    number = 4;
} 
java class object syntax-error
2个回答
1
投票

这是因为方法之外的类定义不是可执行代码。所以这行

file1 = new File("path");

永远不会执行。类定义在编译时处理,语句在运行时执行。

如上所述,您可以创建一个静态代码段,该静态代码段在加载类时执行。但是,我相信这等同于您的第二个示例:

File file1 = new File("path");

((但是我承认没有检查字节码)。


0
投票

您可以使用block语句:

public class Test {
    File file1 ;
     {
        file1 = new File("path");
     }
}
© www.soinside.com 2019 - 2024. All rights reserved.