Jackson从类创建JavaType

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

必须有一种方法可以从JavaType创建String.class吗?

注意:在我的用例中,方法必须是 JavaType的输入,因为该值是使用TypeFactory动态创建的。

/** Returns a JavaType for Map<String, valueType> **/
private static JavaType stringToJavaType(JavaType valueType) {
    TypeFactory typeFactory = objectMapper.getTypeFactory();
    // this does not compile, can't mix Class and JavaType
    return typeFactory.constructMapType(Map.class, String.class, valueType);
}

如果我想回答一个相关的问题,constructMapTypeconstructParametricType有什么优势?

java class jackson jackson2
1个回答
0
投票

您可以通过:

  • constructFromCanonical方法。例如:typeFactory.constructFromCanonical(String.class.getName())
  • constructType方法。例如:typeFactory.constructType(new TypeReference<String>() {})
  • constructArrayType方法。例如:typeFactory.constructArrayType(String.class).getContentType()。但它看起来有点像变通办法。
  • SimpleType.constructUnsafe方法。例如:SimpleType.constructUnsafe(String.class)。从文档中注意:杰克逊核心类使用的方法:不能由应用程序代码使用:它无法正确处理超类型的检查,因此父类和已实现的接口都无法通过生成的类型实例进行访问。
  • 甚至可以尝试避免它。
© www.soinside.com 2019 - 2024. All rights reserved.