相同匿名类 (TypeReference) 声明的数目

Number of the same anonymous class(TypeReference) declarations

提问人:Andrii Yampolskyi 提问时间:3/13/2023 更新时间:3/13/2023 访问量:58

问:

我正在处理一个项目,我们必须处理许多 JSON 实体和一个 SDK 来调用这些 JSON。为了将 JSON 映射到 DTO,我们使用 Jackson 库和 TypeReference 类。

假设有一个存储库处理某种类型的 JSON,并且有一些方法在该引擎盖下使用。new TypeReference

class Repository {
   a() {
      new TypeReference<MyDto> {}
   }

   b() {
      new TypeReference<MyDto> {}
   }

}

它将在构建后创建下一个类:

Repository$1.class
Repository$2.class

基本上,我有 2 个全局问题:

  1. 同一 TypeReference 的声明数是否会以某种方式影响我的项目?因为每个声明都会生成 .class 文件。它会影响类加载器吗?

  2. 您能建议任何处理 TypeReference 的最佳实践吗?我应该把它们放到一个专用的util类中吗?它应该是 TypeReference 的单例实例,还是将其作为单例没有任何意义?

移动到 util 类以防止过度创建 .class 文件。

Java Jackson 加载 匿名类

评论

0赞 f1sh 3/13/2023
除非你有成千上万的这样的人,否则它不会有太大的区别。但是,如果您可以创建一个匿名类,然后在任何地方使用它,为什么还要创建几个匿名类呢?还是需要多个子类?class TypeReferenceImpl<T> extends TypeReference<T>
1赞 Holger 3/14/2023
@f1sh这显然是一个类型标记,旨在捕获泛型类型。因此,它必须是可重立的类型才能实现目的。A 不起作用。另一方面,共享就可以了。TypeReferenceImpl<T>class MyDtoTypeReference extends TypeReference<MyDto>

答: 暂无答案