1. 框架开发 (Framework Development)
-
场景: 框架需要在运行时动态地加载类、创建对象、调用方法,而不需要在编译时知道这些信息。
-
例子:Spring Framework 的依赖注入 (Dependency Injection)
Spring 框架使用反射来实现依赖注入,在运行时动态地将依赖对象注入到目标对象中。
// 示例代码(简化版,仅用于说明原理) // 自定义注解 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Autowired { } // 待注入的类 public class MyService { @Autowired private MyRepository repository; // 需要注入的依赖 public void doSomething() { repository.saveData("Hello, Reflection!"); } } // 依赖类 public class MyRepository { public void saveData(String data) { System.out.println("Saving data: " + data); } } // 实现依赖注入的类 public class DIContainer { public static void inject(Object obj) throws Exception { Class<?> clazz = obj.getClass(); for (Field field : clazz.getDeclaredFields()) { if (field.isAnnotationPresent(Autowired.class)) { field.setAccessible(true); // 允许访问私有字段 Class<?> fieldType = field.getType(); Object dependency = fieldType.newInstance(); // 创建依赖对象 field.set(obj, dependency); // 注入依赖对象 } } } public static void main(String[] args) throws Exception { MyService service = new MyService(); DIContainer.inject(service); // 注入依赖 service.doSomething(); // 调用 service 方法 } }- 解释:
@Autowired注解用于标记需要注入的字段。DIContainer.inject()方法使用反射来遍历类的所有字段,找到带有@Autowired<
- 解释:

最低0.47元/天 解锁文章
772

被折叠的 条评论
为什么被折叠?



