【问题标题】:What is {} with new object in java? [duplicate]java 中新对象的 {} 是什么? [复制]
【发布时间】:2019-06-07 09:23:38
【问题描述】:

如何在 java 中引用 {}。它是一个新的对象或类或数据类型还是其他什么?

我正在通过 json 中的一些代码到对象的转换。它使用com.fasterxml.jackson.core.type.TypeReference。我想了解{} 是什么。因为方法总是接受对象。当我做new XXX() 时,对象的创建就完成了。那么额外的{}需要什么?

try {
  return objectMapper.readValue(dbData, new TypeReference<List<MyClass>>() {});
} catch (IOException e) {
  LOGGER.error("Exception while de-serializing", e);
  return Collections.emptyList();
}

【问题讨论】:

    标签: java


    【解决方案1】:

    这是一个匿名类表达式:

    return objectMapper.readValue(dbData, new TypeReference<List<MyClass>>() {});
    // -----------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    

    它创建了一个扩展TypeReference 的匿名类的新实例。 {} 是一个空的类体。正如 Paul Lemarchand 在评论中所说,它在这里很有用,因为 TypeReference 是一个 abstract 类(否则,您可以只使用 new TypeReference&lt;List&lt;MyClass&gt;&gt;() 而不使用 {})。正文可以是空白的,因为虽然TypeReferenceabstract,但它没有任何abstract 成员;如果它有 abstract 成员,则必须在匿名类的类主体中定义它们。

    更多信息请参阅 Oracle Java 网站上的Java Anonymous Class Tutorial

    【讨论】:

    • 值得一提的是为什么它在那里有用,因为TypeReferenceabstract,正如另一个答案所述。
    【解决方案2】:

    它创建了一个扩展TypeReference 的匿名类。因为TypeReferenceabstract 所以你不能直接实例化它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 2012-01-22
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      相关资源
      最近更新 更多