我有一个名为Files
的课程,我有一个toString
方法,如下所示:
public String toString() {
String res = "[";
for (int i = 0; i < files.size(); ++i) {
if (i > 0) {
res += " ";
}
res += files.get(i);
}
return res + "]";
}
在一个名为Homework
的单独类中,我有另一个toString方法,我尝试打印Files.toString()
中返回的字符串。现在我的代码看起来像:
public String toString(){
String output = Files.toString();
return output;
}
但它给我的错误是它无法对非静态方法进行静态引用。有没有办法制作非静态参考?两个toString
方法都不是静态的,所以我不知道为什么它是静态引用。
答案 0 :(得分:2)
此表达式
Files.toString()
指的是静态toString
方法 - 您需要使用Files
的实例
Files files = new Files();
...
String output = files.toString();
答案 1 :(得分:1)
因为toString
中的Files
不是静态方法,而是以静态方式引用它。创建Files
的对象,然后像new Files().toString();
答案 2 :(得分:1)
你想使用一个文件对象而不是Files类,你这样做你从类File调用方法toString()你不能做,因为toString不是一个静态方法,但你可以调用toString来自基于Files类的对象。
答案 3 :(得分:0)
这是一个静态参考:
Files.toString()
因为Files
是类的名称。但是,这不是一个静态的方法:
public String toString() {
如果您尝试在.toString()
的特定实例上调用Files
,则需要在该实例上调用它,而不是在类本身上调用它。例如,如果实例变量被称为myFiles
,那么你可以这样做:
public String toString(){
String output = myFiles.toString();
return output;
}
Files
对象中Homework
的实例在哪里?或者,如果你没有实例,你想把它变成一个字符串?
答案 4 :(得分:0)
你必须有一个Files类的实例才能调用它的非静态方法。
Files f = new Files();
f.toString();