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

前端 未结 6 1362
猫巷女王i
猫巷女王i 2020-12-01 19:23

I\'m working in Java on a project that requires me to make a few \'container\' classes, if you will. Here is a simple version of one:

public class Pair{

            


        
相关标签:
6条回答
  • 2020-12-01 19:29

    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;
        }
    }
    
    0 讨论(0)
  • 2020-12-01 19:29

    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.

    0 讨论(0)
  • 2020-12-01 19:42

    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() + " - Value: " + value.getValue();
        }
    }
    
    0 讨论(0)
  • 2020-12-01 19:46

    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);
    }
    
    0 讨论(0)
  • 2020-12-01 19:48

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

    @Override 
    public String toString() {
    
        return .....;
      }
    
    0 讨论(0)
  • 2020-12-01 19:50
    /** 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

    0 讨论(0)
提交回复
热议问题