java反射の取得類の情報方法(推奨)


本論文では、上記の「ありふれた反射のクラスの使い方(必見編)」に続き、クラス情報(メンバー関数、メンバー変数、構造関数)を取得するためのツールクラスを作成して、「反射の取得クラスの情報」を説明する。
1、メンバー関数情報を取得する

/**
 *         
 * @param obj
 */
public static void printClassMethodMessage(Object obj){
  //               
  Class c = obj.getClass();
  //      
  System.out.println("     :" + c.getName());
  /**
   * Methods ,    
   *           Method  
   * getMethods()       public   ,        
   * getDeclaredMethods()               ,      
   */
// Method [] ms = c.getMethods();
  Method [] ms = c.getDeclaredMethods();
  for (Method m : ms) {
    //           
    Class returnType = m.getReturnType();
    System.out.print(returnType.getName() + " ");
    //      
    System.out.print(m.getName() + "(");
    //      (               )
    Class[] paramTypes = m.getParameterTypes();
    for (Class paramType : paramTypes) {
      System.out.print(paramType.getName()+",");
    }
    System.out.println(")");
  }
}
2、メンバー変数情報を取得する

/**
 *         
 * @param obj
 */
public static void printClassFieldMessage(Object obj) {
  Class c = obj.getClass();
  /**
   *         
   * Field             
   * getFields()       public       
   * getDeclaredFields()                 
   */
//    Field [] fs = c.getFields();
  Field[] fs = c.getDeclaredFields();
  for (Field f : fs) {
    //             
    Class fieldType = f.getType();
    String typeName = fieldType.getName();
    //         
    String fieldName = f.getName();
    System.out.println(typeName+" "+fieldName);
  }
}
3、コンストラクタ情報を取得する

public static void printConMessage(Object obj){
  Class c = obj.getClass();
  /**
   *         
   * java.lang.Constructor          
   * getConstructors()     public    
   * getDeclaredConstructors()         
   */
//    Constructor[] cs = c.getConstructors();
  Constructor[] cs = c.getDeclaredConstructors();
  for (Constructor constructor : cs) {
    System.out.print(constructor.getName()+"(");
    //           ,            
    Class[] paramTypes = constructor.getParameterTypes();
    for (Class paramType : paramTypes) {
      System.out.print(paramType.getName()+",");
    }
    System.out.println(")");
  }
}
4、ツールコード

package com.format.util;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 *       ,    、    
 * Created by Format on 2017/6/3.
 */
public class ClassUtil {

  /**
   *         
   * @param obj
   */
  public static void printClassMethodMessage(Object obj){
    //               
    Class c = obj.getClass();
    //      
    System.out.println("     :" + c.getName());
    /**
     * Methods ,    
     *           Method  
     * getMethods()       public   ,        
     * getDeclaredMethods()               ,      
     */
//    Method [] ms = c.getMethods();
    Method [] ms = c.getDeclaredMethods();
    for (Method m : ms) {
      //           
      Class returnType = m.getReturnType();
      System.out.print(returnType.getName() + " ");
      //      
      System.out.print(m.getName() + "(");
      //      (               )
      Class[] paramTypes = m.getParameterTypes();
      for (Class paramType : paramTypes) {
        System.out.print(paramType.getName()+",");
      }
      System.out.println(")");
    }
  }

  /**
   *         
   * @param obj
   */
  public static void printClassFieldMessage(Object obj) {
    Class c = obj.getClass();
    /**
     *         
     * Field             
     * getFields()       public       
     * getDeclaredFields()                 
     */
//    Field [] fs = c.getFields();
    Field[] fs = c.getDeclaredFields();
    for (Field f : fs) {
      //             
      Class fieldType = f.getType();
      String typeName = fieldType.getName();
      //         
      String fieldName = f.getName();
      System.out.println(typeName+" "+fieldName);
    }
  }

  /**
   *         
   * @param obj
   */
  public static void printConMessage(Object obj){
    Class c = obj.getClass();
    /**
     *         
     * java.lang.Constructor          
     * getConstructors()     public    
     * getDeclaredConstructors()         
     */
//    Constructor[] cs = c.getConstructors();
    Constructor[] cs = c.getDeclaredConstructors();
    for (Constructor constructor : cs) {
      System.out.print(constructor.getName()+"(");
      //           ,            
      Class[] paramTypes = constructor.getParameterTypes();
      for (Class paramType : paramTypes) {
        System.out.print(paramType.getName()+",");
      }
      System.out.println(")");
    }
  }

}
以上のこのjava反射の獲得類の情報の方法(推薦)は小さい編集がみんなにあげるすべての内容で、みんなに1つの参考をあげることができることを望んで、みんながよけいに私達を支持することをも望みます。