-1

在对象上使用 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 

这不是财政代码。

4

2 回答 2

3

问题是该类CodiceFiscale没有覆盖 Object 的public String toString()方法,因此您会看到从 Object 的默认方法返回的 String。

相反,如果可能,请考虑自己重写该方法,或者打印出 CodiceFiscale 对象的不同字段。如果您不想直接修改 CodiceFiscale,请考虑对其进行扩展,并为您的子类提供一个体面的toString()方法,该方法可以返回重要信息。为此,您可能需要使用“包装器”类。

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

于 2015-01-03T20:50:08.193 回答
1

而不是依赖于toString()一个对象,你应该考虑添加一个“getValue”方法来返回你想要放入文件的内容。转到CodiceFiscale类源并添加如下内容:

public String getFiscalCode() {
  return <string for fiscal code>
}
于 2015-01-03T20:56:29.760 回答