我知道当一个类有一个内部类时,这个类将被编译成两个类文件。今天我有如下代码
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编译器还是会创建两个class文件:
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>>
{
}
有人可以解释为什么要创建这个类吗?
何时在编译时创建多个类文件?
非常感谢!