• 在spring下获取分类下的所有子类


    我们一般使用java的时候更多的时候是获取子类的父类是谁。或者多态的使用具体子类。但是有时候的业务会要求你拿到父类下的所有子类。那么该怎么做呢?

    注意:子类不一定在同一个包里。

    1.在所有的子类上加上自定义注解,全局获取使用自定义注解的类。即为所有的子类。

    该方式未使用,但肯定可以实现。暂不做讨论,有机会在后面予以补充。

    2.在全局类加载的过程里比对 具体的类是否是你父类的子类。

    操作方式,获取全局的class文件路径,挨个比对。发现一个存一个,之后即可获得所有子类。但是这种方式在spring下有点浪费。因为spring有类的托管机制。我们把具体的子类交给spring,让其在jvm启动的时候即实例化。使用如下代码:

    @Component
    //监控类 实现BeanPostProcessor接口
    public class DictDepository implements BeanPostProcessor {
    
    	@Override
    	public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    		return bean;
    	}
    
    	/**
    	 * 在具体子类初始化之后 确认该对象是否是对应父类(DictCode)的子类
    	 */
    	@Override
    	public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
    		// 如实现字典DictCode 则就执行put功能
    		if (bean instanceof DictCode) {
    			DictCode dict = (DictCode) bean;
    			dict.addDict(DictCode.MAPCODE);
    		}
    		return bean;
    	}
    
    }

    此时 该问题即可解决。

    欢迎拍砖。

  • 相关阅读:
    Asp.Net页面传值的方法简单总结【原创】
    .Net架构必备工具列表
    .Net架构必备工具列表
    .Net架构必备工具列表
    C#中几种循环语法的比较
    【UVA 437】The Tower of Babylon(拓扑排序+DP,做法)
    【UVA 437】The Tower of Babylon(记忆化搜索写法)
    【uva 1025】A Spy in the Metro
    【codeforces 538E】Demiurges Play Again
    【Codeforces Beta Round #45 D】Permutations
  • 原文地址:https://www.cnblogs.com/pigga/p/10098243.html
Copyright © 2020-2023  润新知