Java:将类作为TypeReference的参数传递

Java:将类作为TypeReference的参数传递,java,generics,Java,Generics,我使用下面的代码创建一个映射,其中键是“String”,值是“SomeClass”类型。如何将SomeClass作为参数传递,以便可以将函数与多个类一起重用 public Map<String, SomeClass> getMap(String mappingFilePath) throws IOException { Resource mappingResource = resourceLoader.getResource(mappingFilePath); ret

我使用下面的代码创建一个映射,其中键是“String”,值是“SomeClass”类型。如何将SomeClass作为参数传递,以便可以将函数与多个类一起重用

public Map<String, SomeClass> getMap(String mappingFilePath) throws IOException {
    Resource mappingResource = resourceLoader.getResource(mappingFilePath);
    return objectMapper.readValue(
        mappingResource.getInputStream(), new TypeReference<Map<String, SomeClass>>() {});
  }
publicmap getMap(字符串映射文件路径)引发IOException{
Resource mappingResource=resourceLoader.getResource(mappingFilePath);
返回objectMapper.readValue(
mappingResource.getInputStream(),新类型引用(){});
}
例如:

Map<String, Integer> tempMap = getMap(someFilePath, Integer)
// or
Map<String, SomeClass> tempMap = getMap(someFilePath, SomeClass)
Map tempMap=getMap(someFilePath,整数)
//或
Map 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>)
Map tempMap=getMap(someFilePath,Map)
//或
Map tempMap=getMap(someFilePath,LinkedHashMap)
已经是泛型类,因此您可以将其作为第二个参数并返回该类型的对象

public <T> T getMap(String mappingFilePath, TypeReference<T> typeReference) throws IOException {
Resource mappingResource = resourceLoader.getResource(mappingFilePath);
return objectMapper.readValue(
    mappingResource.getInputStream(), typeReference);
}
public T getMap(字符串映射文件路径,TypeReference TypeReference)引发IOException{
Resource mappingResource=resourceLoader.getResource(mappingFilePath);
返回objectMapper.readValue(
mappingResource.getInputStream(),类型引用);
}
然后,您可以将其用于任何类型

Map<String, Integer> tempMap = getMap(someFilePath, new TypeReference<Map<String, Integer>>() {})
// or
Map<String, SomeClass> tempMap = getMap(someFilePath, new TypeReference<Map<String, SomeClass>>() {})
Map tempMap=getMap(someFilePath,newtypereference(){})
//或
Map tempMap=getMap(someFilePath,newtypereference(){})