আমি 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
) ইতিমধ্যে এটি প্রিন্ট করে আপনি এটি চান।