ओह, लेकिन यह बदसूरत, गैर-वस्तु-उन्मुख कोड है। जिस क्षण आप "यदि / और" और "टाइपोफ" देखते हैं, तो आपको बहुरूपता के बारे में सोचना चाहिए। यह जाने का गलत तरीका है। मुझे लगता है कि जेनरिक यहां आपका दोस्त है।
आप कितने प्रकार से निपटने की योजना बनाते हैं?
अपडेट करें:
यदि आप केवल स्ट्रिंग और इंट के बारे में बात कर रहे हैं, तो यहां एक तरीका यह है कि आप इसे कर सकते हैं। इंटरफ़ेस के साथ शुरू करें XmlGenerator ("फू" के साथ पर्याप्त):
package generics;
public interface XmlGenerator<T>
{
String getXml(T value);
}
और ठोस कार्यान्वयन XmlGeneratorImpl:
package generics;
public class XmlGeneratorImpl<T> implements XmlGenerator<T>
{
private Class<T> valueType;
private static final int DEFAULT_CAPACITY = 1024;
public static void main(String [] args)
{
Integer x = 42;
String y = "foobar";
XmlGenerator<Integer> intXmlGenerator = new XmlGeneratorImpl<Integer>(Integer.class);
XmlGenerator<String> stringXmlGenerator = new XmlGeneratorImpl<String>(String.class);
System.out.println("integer: " + intXmlGenerator.getXml(x));
System.out.println("string : " + stringXmlGenerator.getXml(y));
}
public XmlGeneratorImpl(Class<T> clazz)
{
this.valueType = clazz;
}
public String getXml(T value)
{
StringBuilder builder = new StringBuilder(DEFAULT_CAPACITY);
appendTag(builder);
builder.append(value);
appendTag(builder, false);
return builder.toString();
}
private void appendTag(StringBuilder builder) { this.appendTag(builder, false); }
private void appendTag(StringBuilder builder, boolean isClosing)
{
String valueTypeName = valueType.getName();
builder.append("<").append(valueTypeName);
if (isClosing)
{
builder.append("/");
}
builder.append(">");
}
}
यदि मैं इसे चलाता हूं, तो मुझे निम्नलिखित परिणाम मिलते हैं:
integer: <java.lang.Integer>42<java.lang.Integer>
string : <java.lang.String>foobar<java.lang.String>
मुझे नहीं पता कि क्या यह आपके दिमाग में था।