[JAVA] class의 method 모두 찾기

package egovframework.iwt.cmm;

import java.lang.reflect.Method;
import java.util.List;

public class ClassUtil {
    public ClassVo[] getMethosFromClassNames(String[] classNames) {
        if(classNames == null) return new ClassVo[0];

        Class[] classes = new Class[classNames.length];

        ClassLoader classLoader = ClassLoader.getSystemClassLoader();
        for(int i =0; i < classNames.length; i++ ) {
            try {
                classes[i] = classLoader.loadClass(classNames[i]);
            }
            catch(ClassNotFoundException cnfe) {
                cnfe.printStackTrace();
                classes[i] = ClassNotFoundException.class;
            }
        }

        return getMethosFromClasses(classes);
    }

    public ClassVo[] getMethosFromClasses(Class[] classes) {
        if(classes == null) return new ClassVo[0];

        ClassVo[] classVoArr = new ClassVo[classes.length];
        for(int i =0; i < classes.length; i++ ) {
            classVoArr[i] = new ClassVo();
            classVoArr[i].setClassName(classes[i].getName());
            classVoArr[i].setMethods(classes[i].getDeclaredMethods());
        }
        
        return classVoArr;
    }

    public static void main(String[] args) {
        String[] classNames = {"egovframework.com.cmm.ComDefaultCodeVO"
                               ,"egovframework.com.cmm.ComDefaultVO"};
        ClassUtil classUtil = new ClassUtil();
        ClassVo[] classVoArr = classUtil.getMethosFromClassNames(classNames);
        for(int i = 0; i < classVoArr.length; ++i) {
            System.out.println(classVoArr[i].getClassName());
            System.out.println("\t* 설명 : ");
            System.out.println("\t* 메소드 : ");
            Method[] methods = classVoArr[i].getMethods();
            for(int j = 0; j < methods.length; ++j) {
                try {
                    System.out.println("\t\t" + methods[j].getReturnType().getSimpleName() + " " + methods[j].getName() + "()");
                    System.out.println("\t\t");
                    System.out.println("\t\t");
                }
                catch(ArrayIndexOutOfBoundsException aiob) {
                    
                }
            }
        }
    }

    public class ClassVo {
        private String packageString;
        private String className;
        private Method[] methods;
        public String getPackageString() {
            return packageString;
        }
        public void setPackageString(String packageString) {
            this.packageString = packageString;
        }
        public String getClassName() {
            return className;
        }
        public void setClassName(String className) {
            this.className = className;
        }
        public Method[] getMethods() {
            return methods;
        }
        public void setMethods(Method[] methods) {
            this.methods = methods;
        }
    }
}

Posted by incree

2012/11/22 18:45 2012/11/22 18:45
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://www.incree.com/tc/incree/rss/response/173

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다


Notices

Archives

Authors

  1. incree

Recent Trackbacks

Calendar

«   2017/12   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Site Stats

Total hits:
435938
Today:
113
Yesterday:
230