有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:printstream输出奇怪,为什么toString不转换?

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

这不是一个财政代码


共 (2) 个答案

  1. # 1 楼答案

    对于一个对象,而不是依赖于^ {CD1>},您应该考虑添加一个“GETValk”方法,该方法返回您想放入文件中的内容。转到CodiceFiscale类源并添加如下内容:

    public String getFiscalCode() {
      return <string for fiscal code>
    }
    
  2. # 2 楼答案

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

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

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