zoukankan      html  css  js  c++  java
  • 获取当前类的所有父类

     java 获取当前类的所有父类

        /**
         * 获取这个类的所有父类
         * @param clazz
         * @return
         */
        public static List<Class<?>> getSuperClass(Class<?> clazz){
            List<Class<?>> clazzs=new ArrayList<Class<?>>();
            Class<?> suCl=clazz.getSuperclass();
            while(suCl!=null){
                System.out.println(suCl.getName());
                clazzs.add(suCl);
                suCl=suCl.getSuperclass();
            }
            return clazzs;
        }

    1.这个是获取本地workspance下根据同一级别包获取的类

    package com.winway.fullmoni.dataplug.controller;
    
    import java.io.File;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.winway.fullmoni.dataplug.base.ZQBaseController;
    
    public class Test {
        public static void main(String[] args) {
            try {
                System.out.println("接口实现类");
                for(Class<?> c:getAllClass(ZQBaseController.class)){
                    System.out.println(c.getName());
                }
                //System.out.println("子类");
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        /**
         * 获取路径下所有的子类或接口现实类
         * @param cls
         * @return
         * @throws ClassNotFoundException
         */
        public static List<Class<?>> getAllClass(Class<?> cls) throws ClassNotFoundException{
            List<Class<?>> clazzs=new ArrayList<Class<?>>();
            for(Class<?> cl:getClazzs(cls)){
                if(cls.isAssignableFrom(cl)&&!cls.equals(cl)){
                    clazzs.add(cl);
                }
            }
            return clazzs;
        }
        /**
         * 取得当路径下所有的子类
         * @param cls
         * @return
         * @throws ClassNotFoundException
         */
        public static List<Class<?>> getClazzs(Class<?> cls) throws ClassNotFoundException{
            String pk=cls.getPackage().getName();
            String path=pk.replace(".", "/");
            ClassLoader classLoader=Thread.currentThread().getContextClassLoader();
            URL url=classLoader.getResource(path);
            return getClazzs(new File(url.getFile()), pk);
        }
        /**
         * 迭代查找类
         * @param dir
         * @param pk
         * @return
         * @throws ClassNotFoundException
         */
        public static List<Class<?>> getClazzs(File dir,String pk) throws ClassNotFoundException{
            List<Class<?>> clazzs = new ArrayList<Class<?>>();
            if(!dir.exists()){
                return clazzs;
            }
            for(File file:dir.listFiles()){
                if(file.toString().contains(".svn")){
                    continue;
                }
                if(file.isDirectory()){
                    clazzs.addAll(getClazzs(file,pk+"."+file.getName()));
                }
                String name=file.getName();
                System.out.println( "file:"+name);
                if(name.endsWith(".class")){
                    clazzs.add(Class.forName(pk+"."+name.substring(0,(name.length()-6))));
                }
            }
            return clazzs;
        }
        
    }
  • 相关阅读:
    20120110 自己写的基于jquery的翻页效果
    搜来的 可爱的if ie
    哎~~~纠结死了的终于解决的i6的fixed属性
    2011815发现可好的js繁简转换代码 写这些的人。。好厉害呀 收藏了~~~
    网站制作CSS图片转换滤镜代码(貌似只对ie有用。。。)
    2011811 右下角弹出渐隐的广告代码 可以关闭 可以缩小 还各种兼容(ff opera ie6、7、8都试过了)值得保留哎~~~
    20120604 自己写的基于jquery的类似百度贴吧头像提示效果
    UFT textUtil object 解决奇怪问题
    UFT send request & get response
    UFT connect sql (1)
  • 原文地址:https://www.cnblogs.com/gym2017/p/8074304.html
Copyright © 2011-2022 走看看