在实际开发中遇到的一个纠结问题,不知是设计的问题还是~~~~
大家好,最近在做一个项目的时候,在关于XML序列化和反序列化的时候,遇到了几个问题,想了很久,但是一直没有头绪,不知道boss给的设计有没有问题。
现在的情况是这样的:
1.关于ObjectSerializeHelper类得声明
public class ObjectSerializeHelper<T> {
public ObjectSerializeHelper() {
}
public T deserialize(String xml ) {
return null;
};
}
2. 类实例化
ObjectSerializeHelper<SXRenderArgument> serHelper = new ObjectSerializeHelper<SXRenderArgument>();
3.调用ObjectSerializeHelper的方法 deserialize(String xml)方法
(SXRenderArgument ) serHelpr.deserialize(String xml);
是通过强制转化将T转化为SXRenderArgument 类型 。
---------------------------------
现在的我所要做的就是实现
public T deserialize(String xml ) {
return null;
};
可以利用的是一个关于序列化的方法,而这个方法被boss写好了 ,例如
public static Object deserializeStringByJavax(String xmlString,
java.lang.Class... classType) { .....return object; }
我的问题有两个:
1.在实现deserialize的时候调用了 deserializeStringByJavax;那么deserializeStringByJavax方法参数形式怎么传呢?
2:在deserialize中的处理时,怎样得到实例化的对象类型,难道根据不同的对象类型就像不同的处理?
或者可不可以直接写个通用的方法,直接根据T得到实例化的类型,用一个通用的引用,交给deserializeStringByJavax处理,最终得到和实例化的类型匹配的对象。例如此时根据deserialize处理后,就得到一个和xml对应的SXRenderArgument 类型的pojo.
耐心等待中,虚心求教,谢谢各位指点下哦哦
------解决方案--------------------
把public T deserialize(String xml ) 改成
public T deserialize(String xml, class<T> clazz ) {
return (T) deserializeStringByJavax(xml, clazz);
}
否则你没法得到T的class的,你可以通过Class的getParamenterType得到一个泛型参数T,但是得不到具体实例化时的泛型SXRenderArgument,所以最好是自己在参数传进来。