gpt4 book ai didi

Java Reflection - 从对象获取类型以实例化泛型

转载 作者:行者123 更新时间:2023-12-02 08:27:53 25 4
gpt4 key购买 nike

我以前从未真正使用过反射,并且正在尝试一些我不确定是否可行的事情。基本上,我正在尝试编写一个采用 Object 的方法。作为参数,然后尝试编码(marshal)该对象,无论其类型如何。我不知道在实例化通用 JAXBElement<T> 时如何获取要使用的类型目的。这可能吗?我的尝试:

String marshalObject(Object obj) {
Class c = obj.getClass();
Type t = (Type) c;

QName _QNAME = new QName("http://www.acme.com/ImportExport", c.getName());
StringWriter sw = new StringWriter();
try {
ObjectFactory of = new ObjectFactory();
JAXBElement<?> jaxElement = new JAXBElement<t>(_QNAME, c, null, obj);
JAXBContext context = JAXBContext.newInstance( c );
Marshaller m = context.createMarshaller();
m.marshal( jaxElement, sw );
} catch( JAXBException jbe ){
System.out.println("Error marshalling object: " + jbe.toString());
return null;
}

return sw.toString();
}

最佳答案

官方泛型 Nerd 的方法是在方法上粘贴一个类型参数。您声明它:

<T> String marshalObject(T obj) {

然后当你上课时:

Class<T> c = obj.getClass(); // something like that

最后:

JAXBElement<T> jaxElement = new JAXBElement<T>(_QNAME, c, null, obj);

关于Java Reflection - 从对象获取类型以实例化泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4125221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com