我有以下JAXB解组代码,我试图推广。这里是什么样子:泛型可以避免我传回一个通用的'Object'吗?
private Object getResponseObject(String stubbedXmlFile,
Class jaxbInterfaceClass,
AbstractRepository repository) {
Object responseObject = null;
try {
JAXBContext jc = JAXBContext.newInstance(jaxbInterfaceClass);
Unmarshaller u = jc.createUnmarshaller();
InputStream resourceAsStream = TestProvidePensionValuationRepository.class.getClassLoader()
.getResourceAsStream(stubbedXmlFile);
BufferedReader br = new BufferedReader(new InputStreamReader(resourceAsStream));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
ByteArrayInputStream byteStream =
new ByteArrayInputStream(sb.toString().getBytes());
responseObject = u.unmarshal(byteStream);
} catch (JAXBException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return responseObject;
}
我的目标不是返回一个对象,但它传递作为参数相同的种类(例如在jaxbInterfaceClass
)。我认为这可能是泛型的可能,但作为一个相对的新手对泛型我很难过。任何帮助感谢!
是的,我知道这不是一个JAXB问题。感谢您的回应,这只是我以前见过的那种代码,但不记得如何实现。助教。附: “T”字母可以是你喜欢的任何东西吗? – 2010-10-13 14:28:31
@Chris:是的,'T'只是一个命名约定。不过,我建议坚持下去。 – skaffman 2010-10-13 14:30:01
@Chris只是扩展了skaffman的评论:约定是使用单个字母,比如'T'来区分类名和变量的泛型类型参数。例如你可以称它为ClassToUnmarshal,但这会让人困惑。 – mikej 2010-10-13 14:37:59