反射的简单应用

    xiaoxiao2021-03-25  119

    反射会降低程序的运行效率,但是会极大的提高开发效率!!!

    项目开发中会大量用到反射。

    public class Demo { @SuppressWarnings("all") public static void main(String[] args) { //反射在程序运行的时候才起作用,编译的时候不起作用 try { Class<User> clazz = (Class<User>) Class.forName("cn.com.gjw.bean.User"); //通过反射API调用构造方法 User user = clazz.newInstance();//其实是调用了User的无参构造方法 System.out.println(user); Constructor<User> c = clazz.getDeclaredConstructor(int.class,int.class,String.class); User user2 = c.newInstance(1001, 18, "zhangsan"); System.out.println(user2.getUname()); //通过反射API调用普通方法 User user3 = clazz.newInstance(); Method method = clazz.getDeclaredMethod("setUname", String.class); method.invoke(user3, "lisi");//激活user3对象的setUname方法 System.out.println(user3.getUname()); //通过反射API操作属性 Field field = clazz.getDeclaredField("uname"); //访问私有属性或方法时会报异常 field.setAccessible(true);//这个属性不需要做安全检查了,可以直接访问     (调用反射会降低程序运行性能,在必须使用反射的场合,禁用安全检查可以提高反射的运行速度) field.set(user3, "wangwu"); //通过反射直接写属性 System.out.println(user3.getUname()); System.out.println(field.get(user3)); //通过反射读属性的值 } catch (Exception e) { e.printStackTrace(); } } }

    转载请注明原文地址: https://ju.6miu.com/read-3870.html

    最新回复(0)