因为您忽略了 Java 命名约定,所以您已经中了自己的脚。
变量名应以小写字母开头。因此:
package textrpg;
public class File {
static String file;
public static void setFile(String fileLocation) {
file = fileLocation;
}
public static String getFile(){
return file;
}
}
java 编译器不关心这个......但是你的脚发生了,因为你在一个名为File
的类中声明了一个名为的字段File
,而 Java 消除名称冲突的歧义规则给出了一个奇怪的答案。
(如果您包含编译器错误消息,则更容易解释......)
这个类还有其他几个问题:
这是非常非 OO 的代码。你有一个静态字段和静态方法来获取和设置它。这种事情有点“恶心”......如果您需要在另一个上下文中重用代码,或者实现单元测试等,将会导致问题。
您正在使用与众所周知的标准类 ( java.io.File
) 相同的名称。如果您的应用程序中的某些其他类需要同时使用java.io.File
和 ,这可能会导致以后出现问题textrpg.File
。
您还忽略了有关如何形成旨在避免包名称冲突的包名称的约定。
在编写更多代码之前,我强烈建议您阅读Sun Java Coding Conventions。除非你有一个非常好的理由不这样做,否则请跟随他们。(“我不能被打扰”不是一个很好的理由,IMO。)
啊。所以编译错误是这样的:
PrintWriter save = new PrintWriter(File.getFile());
它是说它找不到调用getFile()
in的方法File
。
没有看到那节课的其余部分,我无法确定。但是,我怀疑您正在导入java.io.*
... 这意味着File
代码片段中的 将引用java.io.File
... 它没有getFile()
方法!