反射三种形式
//已知某个类的实例,可通过该实例getClass()方法获取
User u = new User();
Class c1 = u.getClass();
System.out.println(c1.getName());
//知道具体的类,可通过类名的class属性获取
Class c2 = User.class;
System.out.println(c2.getClassLoader());
Class c3 = Class.forName("User");
System.out.println(c3.hashCode());
反射的优缺点:
1、优点:在运行时获得类的各种内容,进行反编译,对于Java这种先编译再运行的语言,能够让我们很方便的创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代码的链接,更加容易实现面向对象。
2、缺点:(1)反射会消耗一定的系统资源,因此,如果不需要动态地创建一个对象,那么就不需要用反射;
(2)反射调用方法时可以忽略权限检查,因此可能会破坏封装性而导致安全问题。