上一篇
java反射三种方法有哪些
- 行业动态
- 2024-03-03
- 3980
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。
Java反射机制主要提供了以下三种功能:
1、在运行时判断任意一个对象所属的类;
2、在运行时构造任意一个类的对象;
3、在运行时调用任意一个对象的方法。
下面将详细介绍这三种功能的实现方法。
在运行时判断任意一个对象所属的类
要获取对象的类信息,可以使用getClass()方法。
Object obj = new String("Hello, World!"); Class<?> clazz = obj.getClass(); System.out.println(clazz); // 输出:class java.lang.String
在运行时构造任意一个类的对象
要构造一个类的对象,首先需要获取该类的Class对象,然后通过newInstance()方法创建对象。
try { Class<?> clazz = Class.forName("java.lang.String"); Object obj = clazz.newInstance(); System.out.println(obj); // 输出:null } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) { e.printStackTrace(); }
注意:newInstance()方法已经过时,建议使用getDeclaredConstructor().newInstance()方法替代。
try { Class<?> clazz = Class.forName("java.lang.String"); Object obj = clazz.getDeclaredConstructor().newInstance(); System.out.println(obj); // 输出:null } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) { e.printStackTrace(); }
在运行时调用任意一个对象的方法
要调用对象的方法,首先需要获取该对象的Class对象,然后通过getMethod()方法获取Method对象,最后通过invoke()方法调用方法。
try { Class<?> clazz = Class.forName("java.lang.String"); Object obj = clazz.getDeclaredConstructor().newInstance(); Method method = clazz.getMethod("length"); Integer length = (Integer) method.invoke(obj); System.out.println(length); // 输出:0 } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) { e.printStackTrace(); }
Java反射机制是一种强大的工具,可以在运行时动态地获取类的信息、创建对象和调用方法,反射操作相对复杂且效率较低,因此在实际开发中应谨慎使用。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/336842.html