在对象上使用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();
}
所有似乎工作正常,但输出是:
data_view.CodiceFiscale@43ee5528
这不是财政代码。
答案 0 :(得分:3)
问题是,类CodiceFiscale
不会覆盖对象的public String toString()
方法,因此您将看到从对象的默认方法返回的字符串。
相反,如果可能,请考虑自己覆盖方法,或者打印出CodiceFiscale对象的不同字段。如果您不想直接修改CodiceFiscale,请考虑扩展它,并为您的子类提供一个体面的toString()
方法,即返回重要信息的方法。您可能需要使用" 包装"为此目的的课程。
话虽如此,我认为通常不建议以这种方式在生产代码中使用toString()
。该方法对于调试目的而言是最有用和最安全的。另一种方法是创建一个静态实用程序方法,该方法从传入的CodiceFiscale对象中提取所有需要的信息,并返回一个感兴趣的String。
答案 1 :(得分:1)
您应该考虑添加一个“getValue”方法,该方法返回您要放入文件的内容,而不是依赖于toString()
。转到CodiceFiscale
类源并添加如下内容:
public String getFiscalCode() {
return <string for fiscal code>
}