如何从给定的片段返回T.class?

时间:2019-03-09 13:29:12

标签: java

T (*(*(*a)[N])())[M];

以上代码特定于“ User”类

我想像这样通用,

private static User yaml() throws IOException, JsonParseException, JsonMappingException {
    ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
    return mapper.readValue(new File("user.yaml"), User.class);
}

但是在T.class上出现错误, 有人可以建议吗?

1 个答案:

答案 0 :(得分:0)

不幸的是,您无法获得想要的东西。 但是,您可以将Class<T>作为输入参数提交给yaml(...)。 您还必须考虑文件名,因为它不再只是user.yaml

一个解决方案就是将两者都作为参数传递

private static <T> T yaml(final Class<T> clazz, final String fileName) throws IOException, JsonParseException, JsonMappingException {
    return MAPPER.readValue(new File(fileName), clazz);
}

我从方法中删除了ObjectMapper创建,因为它是线程安全的,因此可以存储为static final类字段。