【问题标题】:Java: How to create a new instance from a TypeReference object?Java:如何从 TypeReference 对象创建新实例?
【发布时间】:2014-12-11 06:06:51
【问题描述】:

我有一个接受com.fasterxml.jackson.core.type.TypeReference 并返回引用类型的对象的方法,但在某些情况下我只想返回该类型的新实例。

例子:

public <T> T getProperty(String property, TypeReference<T> typeReference) {
    try {
        return someInstanceOfReferencedType();
    }
    catch (IOException e) {
        return ???;
    }
}

如何使用typeReference 实例化&lt;T&gt;?我可以从中获取Type,但不知道从那里做什么...

【问题讨论】:

  • 为什么是TypeReference&lt;T&gt;?为什么不是Class&lt;T&gt;
  • 使用 TypeReference 因为它可能是 Map&lt;Foo, Bar&gt; 类型,我想保留它。
  • 如果是Map,你要实例化什么?
  • 我明白你的意思。我想我应该在这种情况下抛出一个异常。

标签: java types casting jackson instantiation


【解决方案1】:

您可以将 TypeReference 的实例创建为:

List<String> l1 = new TypeReference<ArrayList<String>>() {}.newInstance();

所以你可以调用 getProperty 方法为:

List<String> list = getProperty("property1",new TypeReference <>(){});
//Specify List<> in <> of TypeReference.

【讨论】:

    猜你喜欢
    • 2020-06-18
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多