프로그램 목록 - 클래스에 대한 모든 정보를 인쇄합니다.

16287 단어 java 학습
이 프로그램은 클래스 이름을 입력하고 클래스의 모든 방법과 구조기의 서명, 그리고 모든 도메인 이름을 입력하도록 알려 줍니다.예:
     :
java.lang.Double
public final  class java.lang.Double extends java.lang.Number
{
   public    java.lang.Double(double);
   public    java.lang.Double(java.lang.String);

   public    boolean equals(java.lang.Object);
   public static    java.lang.String toString(double);
   public    java.lang.String toString();
   public    int hashCode();
   public static native    long doubleToRawLongBits(double);
   public static    long doubleToLongBits(double);
   public static native    double longBitsToDouble(long);
   public    int compareTo(java.lang.Double);
   public volatile    int compareTo(java.lang.Object);
   public    byte byteValue();
   public    short shortValue();
   public    int intValue();
   public    long longValue();
   public    float floatValue();
   public    double doubleValue();
   public static    java.lang.Double valueOf(double);
   public static    java.lang.Double valueOf(java.lang.String);
   public static    java.lang.String toHexString(double);
   public static    int compare(double,  double);
   public static    boolean isNaN(double);
   public    boolean isNaN();
   public static    boolean isInfinite(double);
   public    boolean isInfinite();
   public static    double parseDouble(java.lang.String);

public static final    double POSITIVE_INFINITY;
   public static final    double NEGATIVE_INFINITY;
   public static final    double NaN;
   public static final    double MAX_VALUE;
   public static final    double MIN_NORMAL;
   public static final    double MIN_VALUE;
   public static final    int MAX_EXPONENT;
   public static final    int MIN_EXPONENT;
   public static final    int SIZE;
   public static final    java.lang.Class TYPE;
   private final    double value;
   private static final    long serialVersionUID;
}

프로그램 소스 코드:
public class ReflectionTest {
    public static void main(String[] args){
        String name;
        if (args.length>0) {
            name = args[0];
        }else {
            Scanner in = new Scanner(System.in);
            System.out.println("     :");
            name = in.next();
        }

        try {
            Class cl = Class.forName(name);
            Class superCl = cl.getSuperclass();
            String modifiers = Modifier.toString(cl.getModifiers());
            if (modifiers.length()>0){
                System.out.print(modifiers+"  ");
            }
            System.out.print("class "+name);
            if (superCl!=null&&superCl!=Object.class){
                System.out.print(" extends "+superCl.getName());
            }

            System.out.print("
{
"
); printConstructors(cl); System.out.println(); printMethods(cl); System.out.println(); printFields(cl); System.out.println("}"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * * @param cl */ public static void printConstructors(Class cl){ Constructor[] constructors = cl.getDeclaredConstructors(); for (Constructor c:constructors){ String name = c.getName(); System.out.print(" "); String modifiers = Modifier.toString(c.getModifiers()); if (modifiers.length()>0){ System.out.print(modifiers+" "); } System.out.print(name+"("); Class[] paramTypes = c.getParameterTypes(); for (int j=0;j if (j>0) System.out.print(", "); System.out.print(paramTypes[j].getName()); } System.out.println(");"); } } public static void printMethods(Class cl){ Method[] methods = cl.getDeclaredMethods(); for (Method m:methods){ Class retType = m.getReturnType(); String name = m.getName(); System.out.print(" "); String modifiers = Modifier.toString(m.getModifiers()); if (modifiers.length()>0) System.out.print(modifiers+" "); System.out.print(retType.getName()+" "+name+"("); Class[] paramTypes = m.getParameterTypes(); for (int j=0;j if (j>0) System.out.print(", "); System.out.print(paramTypes[j].getName()); } System.out.println(");"); } } public static void printFields(Class cl){ Field[] fields = cl.getDeclaredFields(); for (Field f:fields){ Class type = f.getType(); String name = f.getName(); System.out.print(" "); String modifiers = Modifier.toString(f.getModifiers()); if (modifiers.length()>0) System.out.print(modifiers+" "); System.out.println(type.getName()+" "+name+";"); } } }

좋은 웹페이지 즐겨찾기