【发布时间】:2020-11-22 23:27:17
【问题描述】:
如何返回与返回类型相同的classType(第二个参数)?
public Object getJsonPojo(String fileName, Class classType) {
try {
return objectMapper.readValue(new File(classLoader.getResource(fileName).getFile()), classType);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
现在我只能像下面这样调用
A obj = (A) getJsonPojo("filePath", A.class);
我想要像下面这样的东西,例如(不强制转换):
A obj = getJsonPojo("filePath", A.class);
【问题讨论】:
-
new File(classLoader.getResource(fileName).getFile())← 不要那样做。 URL.getFile() 方法不返回有效的文件名。如果将应用程序打包为单个 .jar 文件,则资源根本就不是文件。要么使用 getResourceAsStream,要么,如果 fileName 确实是项目之外的文件,则完全避免使用 getResource 方法,而只使用 FileInputStream。 -
filrName 是文件 insdie 资源文件夹的路径。例如:如果文件存在于资源/a/b/sample.json 中,我将指定为“a/b/sample.json”
-
感谢@PrathapReddy,通过您提供的链接,我学到了更多东西。