如何从其他类打印return语句?

时间:2013-10-17 15:24:13

标签: java methods return

我有一个名为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方法都不是静态的,所以我不知道为什么它是静态引用。

5 个答案:

答案 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();