对象可以继承字符串表示吗?

Ark*_*sma 3 java string object

将对象显示为字符串时出现以下问题:

class Gast{

    String voorNaam, achterNaam;
    datum geboorteDatum;

    Gast(String vNaam, String aNaam, datum input){

        voorNaam = vNaam;
        achterNaam = aNaam;
        geboorteDatum = input;
    }

    public String toString(){

        return("Naam: " + voorNaam + " " + achterNaam + " " + geboorteDatum);
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我实现了一种在字符串中表示此对象的方法,但是当我尝试在此类中使用它时:

class Kamer{

    boolean vrij;
    Gast gast;

    Kamer(){}

    public String toString(){

         if(vrij == true){

             return "De kamer is vrij!";
         }

         else{

             return gast;
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

kamer.java:17: error: incompatible types: Gast cannot be converted to String
        return gast;
Run Code Online (Sandbox Code Playgroud)

我在类中给出了对象Gast的字符串表示?另一个类不继承我给出的表示吗?

kcr*_*gie 7

尝试:

return gast.toString();
Run Code Online (Sandbox Code Playgroud)

编辑:更好的是,正如@Andreas评论所建议的那样,String.valueOf(gast)如果有可能gast可以为null(或者只是手动检查null)

  • 哦不,请不.不要使用"""+ gast`.如果`gast`可以为null,则使用`String.valueOf(gast)`,而不是那个编译为`new StringBuilder().append(gast).toString()`的错误构造.*<颤抖>* (4认同)
  • 后续:`""+ gast`导致:分配StringBuilder,分配`char [16]`,为实际长度分配`char [?]`,复制文本,分配`String`,分配`char [?]`,copy文本.每次执行*的4-5次分配和2份文本*.在运行时所有开销,只是为了节省一些按键.对不起,我的小鬼.* (3认同)