如何获得T类(泛型)?

问题描述 投票:0回答:1

我在一个类中有此方法,我想获取T-类的类型并将其放在它的位置(我用粗体字写出,但是我得到的只是错误]

@Override
  public  <T>Optional<T> parse(String fileString, Class<T> someClass) {

    File file = new File(fileString);

    T newClass = null;

    try {
      JAXBContext jaxbContext = JAXBContext.newInstance( ???? How do I get class T here ??? );
      Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
      newClass = (T) jaxbUnmarshaller.unmarshal(file);

    } catch (JAXBException e) {
      e.printStackTrace();
    }
    return (Optional<T>) Optional.ofNullable(newClass);
  }

这是我的主要方法,不是那么重要:

        XmlService xmlParser = XmlServiceImpl.getInstance();
        Optional<Company> customer = xmlParser.parse("xmlFile.xml", Company.class);
        System.out.println(Company.class);
java oop generics jaxb optional
1个回答
0
投票

您可以将您的课程令牌直接传递到JAXBContext.newInstance

JAXBContext jaxbContext = JAXBContext.newInstance(someClass);

顺便说一下,只要您在class<T>中的类型参数是可更改的类型,以下未经检查的强制转换是安全的。此外,由于newClass的类型为T,因此您不需要在最后一个return语句中进行强制转换。

这里是文档摘录:

classesToBeBound新要识别的Java类的列表JAXBContext。可以为空,在这种情况下,JAXBContext仅知道有关规范定义的类的信息将返回。

© www.soinside.com 2019 - 2024. All rights reserved.