Geo*_*Geo 10 java performance anonymous-class
请考虑以下代码:
for(int i = 0;i < 200;i++)
{
ArrayList<Integer> currentList = new ArrayList<Integer>() {{
add(i);
}};
// do something with currentList
}
Run Code Online (Sandbox Code Playgroud)
currentList?我只是好奇 :)
ska*_*man 15
ArrayList<Integer> currentList = new ArrayList<Integer>() {{
add(i);
}};
Run Code Online (Sandbox Code Playgroud)
每次通过循环创建匿名类的新实例时,它不是每次都重新定义或重新加载类.该类定义一次(在编译时),并加载一次(在运行时).
使用匿名类没有显着的性能损失.
not*_*oop 15
编译器将任何匿名类转换为命名的内部类.因此,您的代码将转换为以下内容:
class OuterClass$1 extends ArrayList<Integer> {
OuterClass$1(int i) {
super();
add(i);
}
}
for (int i = 0; i < 200; i++) {
ArrayList<Integer> currentList = new OuterClass$1(i);
}
Run Code Online (Sandbox Code Playgroud)