Java:printstream的奇怪输出,为什么toString不';我不能皈依?

Java:printstream的奇怪输出,为什么toString不';我不能皈依?,java,tostring,object-to-string,Java,Tostring,Object To String,在对象上使用toString时,我没有得到预期的结果。(我继承了代码) 目标是在txt文件上打印一个人的FiscalCode 这是我的目标: public class DatiPersonaFisica extends DatiPersona { private String nome; private String cognome; private CodiceFiscale CF; private String cell; private Indirizzo domicilio; } p

在对象上使用toString时,我没有得到预期的结果。(我继承了代码)

目标是在txt文件上打印一个人的
FiscalCode

这是我的目标:

public class DatiPersonaFisica extends DatiPersona {

private String nome;
private String cognome;
private CodiceFiscale CF;
private String cell;
private Indirizzo domicilio;
}
public class LoggerPersone  {

public static void Logger(DatiPersonaFisica p) throws FileNotFoundException{
FileOutputStream fs = new FileOutputStream("logPersoneFisicheInserite.txt",true);
PrintStream scrivi = new PrintStream(fs);
CodiceFiscale codfisc = p.getCF();
codfisc.toString();
scrivi.println(codfisc);
scrivi.close(); 
}
下面是我创建和打印文件的方法:

public class DatiPersonaFisica extends DatiPersona {

private String nome;
private String cognome;
private CodiceFiscale CF;
private String cell;
private Indirizzo domicilio;
}
public class LoggerPersone  {

public static void Logger(DatiPersonaFisica p) throws FileNotFoundException{
FileOutputStream fs = new FileOutputStream("logPersoneFisicheInserite.txt",true);
PrintStream scrivi = new PrintStream(fs);
CodiceFiscale codfisc = p.getCF();
codfisc.toString();
scrivi.println(codfisc);
scrivi.close(); 
}
看起来一切正常,但结果是:

data_view.CodiceFiscale@43ee5528 

这不是会计代码。

问题是类
CodiceFiscale
没有覆盖对象的
公共字符串toString()
方法,因此您看到的字符串是从对象的默认方法返回的

如果可能的话,请考虑要么重写该方法,要么打印CODIFEFISCALE对象的不同字段。如果您不想直接修改CODIFEISCALE,请考虑扩展它,并给您的子类一个体面的<代码> toStrug()/<代码>方法,该方法返回重要信息。为此,您可能需要使用“包装器”类


话虽如此,我认为一般不建议以这种方式在生产代码中使用
toString()
。该方法对于调试目的来说是最有用和最安全的。另一种方法是创建一个静态实用工具方法,它从传入的CODICEFISCALE对象中提取所有需要的信息,并返回一个感兴趣的字符串。

< P>而不是依赖于<代码> toString()/<代码>对象,您应该考虑添加一个“GETValuy”方法,该方法返回您想放入文件中的内容。转到
CodiceFiscale
类源代码并添加如下内容:

public String getFiscalCode() {
  return <string for fiscal code>
}
公共字符串getFiscalCode(){
返回
}

Sarebbe piùfacile per tutti se il suo codo usasse del nomi inglesi!如果你想要一个不同于默认值的toString(),你必须自己编写。是的,不管@fge说什么(?)。@HovercraftFullOfEels“如果你的代码使用英文名称,对每个人来说都会更容易”;)是的。。。并确保在输出数据时调用此方法。1+不确定为什么使用静态方法而不是实例方法。(如果你试图重新水化对象,显然是静态的,但这完全是另一个问题。)@chrylis:OP说他继承了代码,这向我暗示他可以使用这个类,但不能修改它(可能是一个错误的猜测)。所以我假设他需要使用一个带有静态方法的无状态helper类来提取所需的字符串信息。如果他可以修改这个类,那么当然可以使用实例方法。