How to create a println/print method for a custom class

我是研究僧i 提交于 2019-11-27 09:30:21

You will need to override the toString method and return a string representation of what you want.

So for example:

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();
    }
}

Than you can do the following:

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);
}

You need to override 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();
    }
}

You can override the toString() method of your custom class and print whatever information you want.

@Override 
public String toString() {

    return .....;
  }

You could extend ArrayList and override the toString() method:

public class MyArrayList<T> extends ArrayList<T> {
    @Override
    public String toString() {
        // format your print here...
    }
}

But this is overkill. I would just write a print utility method.

public class MyUtils {
    public String toString( ArrayList<? extends Object> ) {
        // format your print here;
    }
}

You'll have to define a toString() method. It's called automatically by System.out.println(Object o). The ArrayList class has such an overridden toString() method that provides a nicely formatted representation.

Basically, overriding Object.toString with your own definition is all that is required.

Tom Ritch
/** demo print of an ArrayList of Address objects using overridden toString() method */

import java.util.ArrayList;

public class Address {

    // simple address fields (incomplete)
    private String addrLine1;
    private String city;
    private String state;

    // run sample program
    public static void main(String[] args) {  new Address().run(); }

    public void run() {
        // instantiate example Address records
        Address addr1 = new Address();
        Address addr2 = new Address();

        // add example field data
        addr1.addrLine1 = "123 This St.";
        addr1.city = "Big Tuna";
        addr1.state = "Texas";
        addr2.addrLine1 = "456 That St.";
        addr2.city = "Phoenix";
        addr2.state = "Arizona";

        // create ArrayList<Address>, add instances
        ArrayList<Address> addrArray = new ArrayList<>();
        addrArray.add(addr1);
        addrArray.add(addr2);

        // print Address instance fields in addrArray
        for ( Address addr : addrArray )
            System.out.println(addr);
    }  // end run()

    // overriding toString() method
    @Override public String toString()
        return "\n" + addrLine1 + "\n" + city + ", " + state;

} // end class Address

Prints:

123 This St.
Big Tuna, Texas

456 That St.
Phoenix, Arizona

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!