toString()
Kendi sınıflarınızda geçersiz kılma (ve bu süreci olabildiğince otomatik hale getirme) hakkındaki yukarıdaki yorumlara katılıyorum .
Eğer sınıflar için vermedi tanımlamak, bir yazabilirsiniz ToStringHelper
kendi damak zevkine ele sahip istediğiniz her kütüphane sınıf için bir aşırı yüklenme yöntemi ile sınıf:
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.
}
DÜZENLEME: xukxpvfzflbbld tarafından yapılan yoruma yanıt olarak, burada daha önce belirtilen durumlar için olası bir uygulama.
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();
}
}
Bu tam bir uygulama değil, sadece bir başlangıç.
AbstractCollection@toString
(ve böyleceString + Stack
) zaten istediğiniz gibi yazdırıyor.