[英]Java: Passing class as an argument for TypeReference
我正在使用以下代码创建一个 map,其中键是“String”,值是“SomeClass”类型。 如何将 SomeClass 作为参数传递,以便可以在多个类中重用 function?
public Map<String, SomeClass> getMap(String mappingFilePath) throws IOException {
Resource mappingResource = resourceLoader.getResource(mappingFilePath);
return objectMapper.readValue(
mappingResource.getInputStream(), new TypeReference<Map<String, SomeClass>>() {});
}
例如:
Map<String, Integer> tempMap = getMap(someFilePath, Integer)
// or
Map<String, SomeClass> tempMap = getMap(someFilePath, SomeClass)
附加问题:
我们可以通过 Map 作为参数吗? 因此,在某些情况下,如果需要,我们可以将其设为 LinkedHashMap。
Map<String, Integer> tempMap = getMap(someFilePath, Map<String, Integer>)
// or
Map<String, SomeClass> tempMap = getMap(someFilePath, LinkedHashMap<String, SomeClass>)
TypeReference已经是一个通用的 class,因此您可以将其作为第二个参数并返回该类型的 object
public <T> T getMap(String mappingFilePath, TypeReference<T> typeReference) throws IOException {
Resource mappingResource = resourceLoader.getResource(mappingFilePath);
return objectMapper.readValue(
mappingResource.getInputStream(), typeReference);
}
然后你可以将它用于任何类型
Map<String, Integer> tempMap = getMap(someFilePath, new TypeReference<Map<String, Integer>>() {})
// or
Map<String, SomeClass> tempMap = getMap(someFilePath, new TypeReference<Map<String, SomeClass>>() {})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.