gpt4 book ai didi

java - 为什么 Gson 中的 TypeToken 构造如此奇怪?

转载 作者:太空狗 更新时间:2023-10-29 23:02:59 26 4
gpt4 key购买 nike

我在用Gson解析object和json的时候,一个TypeToken的初始化好奇怪:

Type collectionType = new TypeToken<Collection<Integer>>(){}.getType();

我只知道这种格式:new TypeToken<Collection<Integer>>().getType(); ,上面的大括号是做什么用的?提前致谢!

P.S. 我查看了 TypeToken 的源代码类,它是一个 class (不是接口(interface)或抽象)并且没有任何构造函数,这意味着它使用 no-parameter constructor默认。

P.S.2 当我删除大括号时,它告诉我构造函数不可见。当我查看 TypeToken 类内部时,这是构造函数:

  protected TypeToken() {
this.type = getSuperclassTypeParameter(getClass());
this.rawType = (Class<? super T>) $Gson$Types.getRawType(type);
this.hashCode = type.hashCode();
}

为什么不直接使用 public相反?

最佳答案

“怪异”不完全是一个技术术语。该类的定义方式迫使您显式指定一个通用参数以与其具体实例相关联。由于已编译的 Java 类保留了有关其通用参数的信息,因此这些信息可供需要它的框架库使用。

这就是父类(super class)型 token 的真正目的。

关于java - 为什么 Gson 中的 TypeToken 构造如此奇怪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15479724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com