मैं toString()
आपकी अपनी कक्षाओं (और उस प्रक्रिया को यथासंभव स्वचालित करने के बारे में) के बारे में उपरोक्त टिप्पणियों से सहमत हूँ ।
उन कक्षाओं के लिए जिन्हें आपने परिभाषित नहीं किया था , आप ToStringHelper
प्रत्येक पुस्तकालय वर्ग के लिए एक अतिभारित विधि के साथ एक वर्ग लिख सकते हैं जिसे आप अपने छोटे कट के साथ संभालना चाहते हैं:
public class ToStringHelper {
//... instance configuration here (e.g. punctuation, etc.)
public toString(List m) {
// presentation of List content to your liking
}
public toString(Map m) {
// presentation of Map content to your liking
}
public toString(Set m) {
// presentation of Set content to your liking
}
//... etc.
}
संपादित करें: xukxpvfzflbbld द्वारा टिप्पणी का जवाब देते हुए, यहां पहले उल्लेख किए गए मामलों के लिए एक संभावित कार्यान्वयन है।
package com.so.demos;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class ToStringHelper {
private String separator;
private String arrow;
public ToStringHelper(String separator, String arrow) {
this.separator = separator;
this.arrow = arrow;
}
public String toString(List<?> l) {
StringBuilder sb = new StringBuilder("(");
String sep = "";
for (Object object : l) {
sb.append(sep).append(object.toString());
sep = separator;
}
return sb.append(")").toString();
}
public String toString(Map<?,?> m) {
StringBuilder sb = new StringBuilder("[");
String sep = "";
for (Object object : m.keySet()) {
sb.append(sep)
.append(object.toString())
.append(arrow)
.append(m.get(object).toString());
sep = separator;
}
return sb.append("]").toString();
}
public String toString(Set<?> s) {
StringBuilder sb = new StringBuilder("{");
String sep = "";
for (Object object : s) {
sb.append(sep).append(object.toString());
sep = separator;
}
return sb.append("}").toString();
}
}
यह पूर्ण-विकसित कार्यान्वयन नहीं है, बल्कि सिर्फ एक स्टार्टर है।
AbstractCollection@toString
(और इस तरहString + Stack
) पहले से ही इसे प्रिंट करता है जैसे आप चाहते हैं।