打印对象的引用

use*_*ser 7 java object

我是java的新手.说,我有一个班级个人.我想要打印

Individual ind = new Individual();
System.out.println(ind);
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了如下输出:

Individual@1922221
Run Code Online (Sandbox Code Playgroud)
  1. 这有什么意义?
  2. 它是该对象的某种独特ID吗?
  3. 我可以自定义吗?我的意思是写一个我自己的函数,当我打印时会给出输出?
  4. 如果是这样,我该怎么做?

Aha*_*med 10

如果要打印任何对象的有意义内容,则必须实现自己的toString()方法,该方法将覆盖parent(Object)类的toString()方法.默认情况下,所有类(无论您创建什么)都会扩展Object类.

示例代码:

public class Individual {
    private String name;
    private String city;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("Name of Individual :").append(this.getName())
                .append("\nCity :").append(this.getCity());
        return builder.toString();
    }
    public static void main(String[] args) {
        Individual individual = new Individual();
        individual.setName("Crucified Soul");
        individual.setCity("City of Crucified Soul");
        System.out.println(individual);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Name of Individual :Crucified Soul
City :City of Crucified Soul
Run Code Online (Sandbox Code Playgroud)

如果你有一个包含许多变量的更大的类,你可以使用XStream来实现你的toString()方法.XStream将以XML格式打印有意义的对象.即使您可以将它们解析回等效对象.希望这会对你有所帮助.


Jan*_*yka 7

这是默认的toString()方法的结果 - 类名+哈希码.这可以通过重写toString()来覆盖.

这里有一些参考:http://www.javapractices.com/topic/TopicAction.do?Id=55