gpt4 book ai didi

java - 为什么编译时会创建两个类文件?

转载 作者:行者123 更新时间:2023-12-01 06:39:18 25 4
gpt4 key购买 nike

我知道当一个类有一个内部类时,这个类将被编译为两个类文件。今天我的代码如下

public class GenericDeserializer {

public static void main(String[] args) {
String cityPageLoadJson = "{\"count\":2,\"pageLoad\":[{\"id\":4,\"name\":\"HAN\"},{\"id\":8,\"name\":\"SGN\"}]}";
Type type = new TypeToken<GenericResult<City>>() {
}.getType();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
GenericResult<City> cityPageLoad = gson.fromJson(cityPageLoadJson, type);
for (City city : cityPageLoad.getPageLoad()) {
System.out.println(gson.toJson(city));
}
}

}

虽然上面没有内部类,但是java编译器仍然创建了两个类文件:

GenericDeserializer.class
GenericDeserializer$1.class

使用Java Decompiler工具,我看到了第二个内容

package net.tuandn.training.lesson.gson;

import com.google.gson.reflect.TypeToken;
import net.tuandn.training.model.City;
import net.tuandn.training.model.GenericResult;

final class GenericDeserializer$1 extends TypeToken<GenericResult<City>>
{
}

有人可以解释一下为什么要创建这个类吗?
编译时什么时候创建多个类文件?

非常感谢!

最佳答案

由于您在以下语句中使用匿名类,因此生成了两个类文件:

    TypeToken<GenericResult<City>>() {
.....
}

每个匿名类文件都使用与容器类相同的名称,并附加 $1/$2 等。

关于java - 为什么编译时会创建两个类文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18642422/

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