Java知识点总结(反射-反射机制性能问题)
@(Java知识点总结)[Java, 反射]
性能相关注意点:
setAccessible
-
- 启用和禁用访问安全检查的开关,值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。__并不是为true就能访问为false就不能访问__。
- 禁止安全检查,可以提高反射的运行速度。
测试示例:
import java.lang.reflect.Method;/** * 反射性能测试 * @author Administrator * */public class Test05 { public static void test1(){ Student student = new Student(); long startTime = System.currentTimeMillis(); for (int i = 0; i < 1000000000; i++) { student.setName("张三"); } long endTime = System.currentTimeMillis (); System.out.printf("调用普通方法,执行1亿次,耗时%dms\n",endTime-startTime); } public static void test2(){ try { Student student = new Student(); Method m = student.getClass().getMethod("setName", String.class); long startTime = System.currentTimeMillis(); for (int i = 0; i < 1000000000; i++) { m.invoke(student,"张三"); } long endTime = System.currentTimeMillis(); System.out.printf("调用反射方法,执行1亿次,耗时%dms\n",endTime-startTime); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { test1(); //41ms test2(); //1826ms }}