如何为自定义类创建println/print方法

Pro*_*404 7 java printing println

我正在Java上开展一个项目,要求我制作一些"容器"类,如果你愿意的话.这是一个简单的版本:

public class Pair{

    Object KEY;
    Object VALUE;

    public Pair(Object k, Object v)
    {
        KEY = k;
        VALUE = v;
    }

    public Object getKey()
    { return KEY; }
    public Object getValue()
    { return VALUE; }
}
Run Code Online (Sandbox Code Playgroud)

(请注意,这是严格简化的,我在最终版本中使用了正确的set/get方法.)

我的问题是:

使用ArrayList作为参数调用println方法时,例如:

ArrayList<String> arr = new ArrayList<String>();
arr.add("one");
arr.add("two");
System.out.println(arr);
Run Code Online (Sandbox Code Playgroud)

Java自动知道如何正确打印ArrayList的每个"节点"或元素.

有没有办法编写一个方法来允许println方法正确打印我的Pair类?

Cas*_*sey 15

您将需要覆盖该toString方法并返回所需内容的字符串表示形式.

例如:

public class Pair {

    Object key;
    Object value;

    public Pair(Object k, Object v)
    {
        key = k;
        value = v;
    }

    public Object getKey() { 
        return key; 
    }

    public Object getValue() { 
        return value; 
    }

    public String toString() {
        return "Key: " + getKey() + ", Value: " + getValue();
    }
}
Run Code Online (Sandbox Code Playgroud)

比你可以做的更多:

List<Pair> pairs = new ArrayList<Pair>();
pairs.Add(new Pair("pair1key", "pair1value"));
pairs.Add(new Pair("pair2key", "pair2value"));

for (Pair p : pairs) {
    System.out.println(p);
}
Run Code Online (Sandbox Code Playgroud)


Eng*_*uad 5

你需要覆盖toString():

public class Pair
{
    KeyObject key;
    ValueObject value;

    public Pair(KeyObject k, ValueObject v)
    {
        key = k;
        vale = v;
    }

    // ...

    @Override
    public String toString()
    {
         return "Key: " + key.getKey() + " - Vlaue: " value.getValue();
    }
}
Run Code Online (Sandbox Code Playgroud)