欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

(JAVA)反射

发布时间:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 (JAVA)反射 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method;/*** @author Alina* @date 2021年12月30日 10:47 下午* JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,* 都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java 语言的反射机制。* 获取字节码文件的三种方式* 1.new 对象后 使用getClass获取* 2.使用静态属性class 获取* 3.Class类的静态方法 forName()* 4.获取所有公共构造方法* 5.获取一个空参构造器* 6.获取有参构造器* 7.获取有参构造器简便方式:类中必有空参的public 权限的 class类中有newInstance()* 8.获取一个带有参数的私有构造器,并运行* 9.获取成员变量 从类中的class文件中获取成员变量 Field getFields()* 10.获取成员方法 Method getMethod 运行获取到的方法 invoke*/ public class ReflectDemo {public static void main(String[] args)throws Exception {// method_2();method_10();}public static void method_10()throws Exception{Class clazz10 = Class.forName("People");Object obj = clazz10.newInstance(); // Method[] methods = clazz10.getMethods(); // for(Method m :methods){ // System.out.println(m); // }Method method = clazz10.getMethod("show"); // 获取空参方法method.invoke(obj);Method method1 = clazz10.getMethod("show",int.class,double.class);method1.invoke(obj,10,12.34);}public static void method_9 () throws Exception{Class clazz9 = Class.forName("People");Object obj = clazz9.newInstance(); // Field[] fields = clazz9.getFields(); //获取所有共有权限的成员变量 获取私有的加Declared // for (Field f : fields){ // System.out.println(f); // }Field filed = clazz9.getField("sex");filed.set(obj,"女");System.out.println(obj);}public static void method_8 ()throws Exception {Class clazz8 = Class.forName("People");Constructor con = clazz8.getDeclaredConstructor(String.class);System.out.println(con);//父类方法con.setAccessible(true);Object obj = con.newInstance("李四");System.out.println(obj);}public static void method_7 ()throws Exception {Class clazz7 = Class.forName("People");System.out.println(clazz7.newInstance());}public static void method_6 ()throws Exception {Class clazz6 = Class.forName("People");Constructor con = clazz6.getConstructor(String.class,int.class);Object obj = con.newInstance("张三",20);System.out.println(obj);}public static void method_5 ()throws Exception {Class clazz5 = Class.forName("People");Constructor con = clazz5.getConstructor();System.out.println(con);}public static void method_4 ()throws Exception {Class class4 = Class.forName("People");Constructor[] cons = class4.getConstructors();for(Constructor com:cons){System.out.println(com);}}public static void method_3 () throws Exception {Class class3 = Class.forName("People");System.out.println(class3);}public static void method_2 (){Class class2 = People.class;System.out.println(class2);}public static void method_1(){People p = new People();Class class1 = p.getClass();System.out.println(class1);} }

创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖

总结

以上是生活随笔为你收集整理的(JAVA)反射的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。