反射與set效率對(duì)比
public class Test7 {
? ? public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
? ? ? ? A a= new A();
? ? ? ? long start= System.currentTimeMillis();
? ? ? ? for (int i= 0; i< 100000; i++) {
? ? ? ? ? ? setval1(a);
}
? ? ? ? System.out.println("耗時(shí)"+(System.currentTimeMillis()-start));
}
? ? //50000 平均50ms 1000000 159ms? 100000000 8856ms
? ? private static void setval1(A a) throws NoSuchFieldException, IllegalAccessException {
? ? ? ? Field field= A.class.getDeclaredField("a");
? ? ? ? field.setAccessible(false);
? ? ? ? field.set(a,"1");
}
? ? //50000 2ms? 1000000 5ms? 100000000 13ms
? ? private static void setval2(A a) throws NoSuchFieldException, IllegalAccessException {
? ? ? a.setA("1");
}
}
class A {
? ? String a;
? ? public String getA() {
? ? ? ? return a;
}
? ? public void setA(String a) {
? ? ? ? this.a = a;
}
}