java反射の取得類の情報方法(推奨)
本論文では、上記の「ありふれた反射のクラスの使い方(必見編)」に続き、クラス情報(メンバー関数、メンバー変数、構造関数)を取得するためのツールクラスを作成して、「反射の取得クラスの情報」を説明する。
1、メンバー関数情報を取得する
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つの参考をあげることができることを望んで、みんながよけいに私達を支持することをも望みます。