java反射 学习记录

java反射  学习记录

  1. 获取类的Class对象

Class<?> clazz = Class.forName("com.example.MyClass");

 

  1. 获取类的所有接口

 
Class<?>[] interfaces = clazz.getInterfaces();

 

  1. 获取类的所有抽象方法

 
Method[] abstractMethods = clazz.getDeclaredMethods();
  1. 获取类的所有成员变量和成员方法

 
Field[] fields = clazz.getDeclaredFields();

 

  1. 获取类的所有构造方法

 
Constructor<?>[] constructors = clazz.getDeclaredConstructors();

 

  1. 创建类的实例

 
Object instance = clazz.newInstance();

 

  1. 获取类的所有方法

 
Method[] methods = clazz.getDeclaredMethods();

 

  1. 调用方法

 
Method method = clazz.getDeclaredMethod("methodName", parameterTypes);  
Object result = method.invoke(instance, arguments);

 

  1. 设置属性值

 
Object value = clazz.getDeclaredField("fieldName").get(instance);

 

  1. 获取类的所有字段

 
Field[] fields = clazz.getDeclaredFields();

 

  1. 获取类的所有构造方法

 
Constructor<?>[] constructors = clazz.getDeclaredConstructors();

 

  1. 设置构造方法参数

 
Constructor<?>[] constructors = clazz.getDeclaredConstructors();  
Constructor<?> constructor = constructors[0];  
constructor.setAccessible(true);  
constructor.setAccessible(true);  
constructor.setAccessible(true);  
constructor.setAccessible(true);  
Object result = constructor.newInstance(arguments);

 

 

  1. 调用构造方法

 
constructor.setAccessible(true);  
constructor.setAccessible(true);  
constructor.setAccessible(true);  
constructor.setAccessible(true);  
Object result = constructor.newInstance(arguments);

 

  1. 创建对象数组

 
Object[] array = clazz.getConstructor(argumentTypes).newInstance(arguments);

 

  1. 调用方法

 
Method method = clazz.getDeclaredMethod("methodName", parameterTypes);  
Object result = method.invoke(instance, array);

 

 

Java反射(Java Reflection)是指在运行时动态地获取类的信息,包括类的字段、方法和构造方法,并对其进行操作的过程。反射允许开发者直接操作类的属性和方法,而不需要先创建类的实例。这可以简化代码,提高开发效率,并且使得代码更加灵活。

Java反射的意义在于:

  1. 简化开发:通过反射,开发者可以直接操作类的属性和方法,而不需要先创建类的实例。这可以简化代码,提高开发效率。
  2. 动态类加载:Java 中的许多类库和框架使用反射来支持动态加载。通过反射,可以在运行时动态地加载类,从而提高程序的灵活性和可扩展性。
  3. 增强代码安全性:反射可以在运行时获取类的信息,这使得攻击者可以获取到程序的内部状态,从而增强代码的安全性。因此,对于关键的程序,反射的使用应该谨慎,并且需要对输入数据进行严格的验证和过滤。
  4. 提高可维护性:反射允许开发者直接操作类的属性和方法,这使得代码更加灵活,但同时也增加了代码的复杂性。通过使用反射,可以更好地管理和维护代码,并且使得代码更加可读和可维护。

总之,Java反射是一种强大的工具,可以帮助开发者简化开发过程,提高代码的灵活性和可维护性,同时也增强了代码的安全性。

 

###########################

posted @ 2023-05-01 04:31  西北逍遥  阅读(13)  评论(0编辑  收藏  举报