反射机制获取类的属性和方法信息

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

import org.junit.jupiter.api.Test;

public class Reflect
{ 
    /**
     * 获取属性信息
     * 
     * @param clazz
     * @see [类、类#方法、类#成员]
     */
    public static void getFieldsInfo(Class<?> clazz)
    {
        Field[] f = clazz.getDeclaredFields();
        for (int i = 0; i < f.length; i++)
        {
            System.out.println("\n属  性:\t" + f[i]);
            System.out.println("修饰符:\t" + Modifier.toString(f[i].getModifiers()));
            System.out.println("类  型:\t" + f[i].getType());
            System.out.println("属性名:\t" + f[i].getName());
        }
    }
    
    /***
     * 获取方法信息
     * 
     * @param clazz
     * @see [类、类#方法、类#成员]
     */
    public static void getMethodsInfo(Class<?> clazz)
    {
        Method[] m = clazz.getDeclaredMethods();
        for (int i = 0; i < m.length; i++)
        {
            System.out.println("\n方  法:\t" + m[i].toString());
            System.out.println("修饰符:\t" + Modifier.toString(m[i].getModifiers()));
            System.out.println("返回值:\t" + m[i].getReturnType());
            System.out.println("方法名:\t" + m[i].getName());
            System.out.print("参  数:\t");
            Class<?>[] p = m[i].getParameterTypes();
            if (p.length == 0)
            {
                System.out.print("无");
            }
            for (int j = 0; j < p.length; j++)
            {
                System.out.print(p[j] + "\t");
            }
            System.out.println();
            System.out.print("异  常:\t");
            Class<?>[] e = m[i].getExceptionTypes();
            if (e.length == 0)
            {
                System.out.print("无");
            }
            for (int j = 0; j < e.length; j++)
            {
                System.out.print(e[j] + "\t");
            }
            System.out.println();
        }
    }
    
    @Test
    public void testString()
    {
        Class<?> clazz = String.class;
        Reflect.getFieldsInfo(clazz);
        Reflect.getMethodsInfo(clazz);
    }
}

运行结果

属  性:	private final char[] java.lang.String.value
修饰符:	private final
类  型:	class [C
属性名:	value

属  性:	private int java.lang.String.hash
修饰符:	private
类  型:	int
属性名:	hash

属  性:	private static final long java.lang.String.serialVersionUID
修饰符:	private static final
类  型:	long
属性名:	serialVersionUID

属  性:	private static final java.io.ObjectStreamField[] java.lang.String.serialPersistentFields
修饰符:	private static final
类  型:	class [Ljava.io.ObjectStreamField;
属性名:	serialPersistentFields

属  性:	public static final java.util.Comparator java.lang.String.CASE_INSENSITIVE_ORDER
修饰符:	public static final
类  型:	interface java.util.Comparator
属性名:	CASE_INSENSITIVE_ORDER

方  法:	public boolean java.lang.String.equals(java.lang.Object)
修饰符:	public
返回值:	boolean
方法名:	equals
参  数:	class java.lang.Object	
异  常:	无

方  法:	public java.lang.String java.lang.String.toString()
修饰符:	public
返回值:	class java.lang.String
方法名:	toString
参  数:	无
异  常:	无

方  法:	public int java.lang.String.hashCode()
修饰符:	public
返回值:	int
方法名:	hashCode
参  数:	无
异  常:	无

方  法:	public int java.lang.String.compareTo(java.lang.String)
修饰符:	public
返回值:	int
方法名:	compareTo
参  数:	class java.lang.String	
异  常:	无

方  法:	public int java.lang.String.compareTo(java.lang.Object)
修饰符:	public volatile
返回值:	int
方法名:	compareTo
参  数:	class java.lang.Object	
异  常:	无

方  法:	public int java.lang.String.indexOf(java.lang.String,int)
修饰符:	public
返回值:	int
方法名:	indexOf
参  数:	class java.lang.String	int	
异  常:	无

方  法:	public int java.lang.String.indexOf(java.lang.String)
修饰符:	public
返回值:	int
方法名:	indexOf
参  数:	class java.lang.String	
异  常:	无

方  法:	public int java.lang.String.indexOf(int,int)
修饰符:	public
返回值:	int
方法名:	indexOf
参  数:	int	int	
异  常:	无

方  法:	public int java.lang.String.indexOf(int)
修饰符:	public
返回值:	int
方法名:	indexOf
参  数:	int	
异  常:	无

方  法:	static int java.lang.String.indexOf(char[],int,int,char[],int,int,int)
修饰符:	static
返回值:	int
方法名:	indexOf
参  数:	class [C	int	int	class [C	int	int	int	
异  常:	无

方  法:	static int java.lang.String.indexOf(char[],int,int,java.lang.String,int)
修饰符:	static
返回值:	int
方法名:	indexOf
参  数:	class [C	int	int	class java.lang.String	int	
异  常:	无

方  法:	public static java.lang.String java.lang.String.valueOf(int)
修饰符:	public static
返回值:	class java.lang.String
方法名:	valueOf
参  数:	int	
异  常:	无

方  法:	public static java.lang.String java.lang.String.valueOf(long)
修饰符:	public static
返回值:	class java.lang.String
方法名:	valueOf
参  数:	long	
异  常:	无

方  法:	public static java.lang.String java.lang.String.valueOf(float)
修饰符:	public static
返回值:	class java.lang.String
方法名:	valueOf
参  数:	float	
异  常:	无

方  法:	public static java.lang.String java.lang.String.valueOf(boolean)
修饰符:	public static
返回值:	class java.lang.String
方法名:	valueOf
参  数:	boolean	
异  常:	无

方  法:	public static java.lang.String java.lang.String.valueOf(char[])
修饰符:	public static
返回值:	class java.lang.String
方法名:	valueOf
参  数:	class [C	
异  常:	无

方  法:	public static java.lang.String java.lang.String.valueOf(char[],int,int)
修饰符:	public static
返回值:	class java.lang.String
方法名:	valueOf
参  数:	class [C	int	int	
异  常:	无

方  法:	public static java.lang.String java.lang.String.valueOf(java.lang.Object)
修饰符:	public static
返回值:	class java.lang.String
方法名:	valueOf
参  数:	class java.lang.Object	
异  常:	无

方  法:	public static java.lang.String java.lang.String.valueOf(char)
修饰符:	public static
返回值:	class java.lang.String
方法名:	valueOf
参  数:	char	
异  常:	无

方  法:	public static java.lang.String java.lang.String.valueOf(double)
修饰符:	public static
返回值:	class java.lang.String
方法名:	valueOf
参  数:	double	
异  常:	无

方  法:	public char java.lang.String.charAt(int)
修饰符:	public
返回值:	char
方法名:	charAt
参  数:	int	
异  常:	无

方  法:	private static void java.lang.String.checkBounds(byte[],int,int)
修饰符:	private static
返回值:	void
方法名:	checkBounds
参  数:	class [B	int	int	
异  常:	无

方  法:	public int java.lang.String.codePointAt(int)
修饰符:	public
返回值:	int
方法名:	codePointAt
参  数:	int	
异  常:	无

方  法:	public int java.lang.String.codePointBefore(int)
修饰符:	public
返回值:	int
方法名:	codePointBefore
参  数:	int	
异  常:	无

方  法:	public int java.lang.String.codePointCount(int,int)
修饰符:	public
返回值:	int
方法名:	codePointCount
参  数:	int	int	
异  常:	无

方  法:	public int java.lang.String.compareToIgnoreCase(java.lang.String)
修饰符:	public
返回值:	int
方法名:	compareToIgnoreCase
参  数:	class java.lang.String	
异  常:	无

方  法:	public java.lang.String java.lang.String.concat(java.lang.String)
修饰符:	public
返回值:	class java.lang.String
方法名:	concat
参  数:	class java.lang.String	
异  常:	无

方  法:	public boolean java.lang.String.contains(java.lang.CharSequence)
修饰符:	public
返回值:	boolean
方法名:	contains
参  数:	interface java.lang.CharSequence	
异  常:	无

方  法:	public boolean java.lang.String.contentEquals(java.lang.CharSequence)
修饰符:	public
返回值:	boolean
方法名:	contentEquals
参  数:	interface java.lang.CharSequence	
异  常:	无

方  法:	public boolean java.lang.String.contentEquals(java.lang.StringBuffer)
修饰符:	public
返回值:	boolean
方法名:	contentEquals
参  数:	class java.lang.StringBuffer	
异  常:	无

方  法:	public static java.lang.String java.lang.String.copyValueOf(char[])
修饰符:	public static
返回值:	class java.lang.String
方法名:	copyValueOf
参  数:	class [C	
异  常:	无

方  法:	public static java.lang.String java.lang.String.copyValueOf(char[],int,int)
修饰符:	public static
返回值:	class java.lang.String
方法名:	copyValueOf
参  数:	class [C	int	int	
异  常:	无

方  法:	public boolean java.lang.String.endsWith(java.lang.String)
修饰符:	public
返回值:	boolean
方法名:	endsWith
参  数:	class java.lang.String	
异  常:	无

方  法:	public boolean java.lang.String.equalsIgnoreCase(java.lang.String)
修饰符:	public
返回值:	boolean
方法名:	equalsIgnoreCase
参  数:	class java.lang.String	
异  常:	无

方  法:	public static java.lang.String java.lang.String.format(java.util.Locale,java.lang.String,java.lang.Object[])
修饰符:	public static transient
返回值:	class java.lang.String
方法名:	format
参  数:	class java.util.Locale	class java.lang.String	class [Ljava.lang.Object;	
异  常:	无

方  法:	public static java.lang.String java.lang.String.format(java.lang.String,java.lang.Object[])
修饰符:	public static transient
返回值:	class java.lang.String
方法名:	format
参  数:	class java.lang.String	class [Ljava.lang.Object;	
异  常:	无

方  法:	public void java.lang.String.getBytes(int,int,byte[],int)
修饰符:	public
返回值:	void
方法名:	getBytes
参  数:	int	int	class [B	int	
异  常:	无

方  法:	public byte[] java.lang.String.getBytes(java.nio.charset.Charset)
修饰符:	public
返回值:	class [B
方法名:	getBytes
参  数:	class java.nio.charset.Charset	
异  常:	无

方  法:	public byte[] java.lang.String.getBytes(java.lang.String) throws java.io.UnsupportedEncodingException
修饰符:	public
返回值:	class [B
方法名:	getBytes
参  数:	class java.lang.String	
异  常:	class java.io.UnsupportedEncodingException	

方  法:	public byte[] java.lang.String.getBytes()
修饰符:	public
返回值:	class [B
方法名:	getBytes
参  数:	无
异  常:	无

方  法:	public void java.lang.String.getChars(int,int,char[],int)
修饰符:	public
返回值:	void
方法名:	getChars
参  数:	int	int	class [C	int	
异  常:	无

方  法:	void java.lang.String.getChars(char[],int)
修饰符:	
返回值:	void
方法名:	getChars
参  数:	class [C	int	
异  常:	无

方  法:	private int java.lang.String.indexOfSupplementary(int,int)
修饰符:	private
返回值:	int
方法名:	indexOfSupplementary
参  数:	int	int	
异  常:	无

方  法:	public native java.lang.String java.lang.String.intern()
修饰符:	public native
返回值:	class java.lang.String
方法名:	intern
参  数:	无
异  常:	无

方  法:	public boolean java.lang.String.isEmpty()
修饰符:	public
返回值:	boolean
方法名:	isEmpty
参  数:	无
异  常:	无

方  法:	public static java.lang.String java.lang.String.join(java.lang.CharSequence,java.lang.CharSequence[])
修饰符:	public static transient
返回值:	class java.lang.String
方法名:	join
参  数:	interface java.lang.CharSequence	class [Ljava.lang.CharSequence;	
异  常:	无

方  法:	public static java.lang.String java.lang.String.join(java.lang.CharSequence,java.lang.Iterable)
修饰符:	public static
返回值:	class java.lang.String
方法名:	join
参  数:	interface java.lang.CharSequence	interface java.lang.Iterable	
异  常:	无

方  法:	public int java.lang.String.lastIndexOf(int)
修饰符:	public
返回值:	int
方法名:	lastIndexOf
参  数:	int	
异  常:	无

方  法:	public int java.lang.String.lastIndexOf(java.lang.String)
修饰符:	public
返回值:	int
方法名:	lastIndexOf
参  数:	class java.lang.String	
异  常:	无

方  法:	static int java.lang.String.lastIndexOf(char[],int,int,java.lang.String,int)
修饰符:	static
返回值:	int
方法名:	lastIndexOf
参  数:	class [C	int	int	class java.lang.String	int	
异  常:	无

方  法:	public int java.lang.String.lastIndexOf(java.lang.String,int)
修饰符:	public
返回值:	int
方法名:	lastIndexOf
参  数:	class java.lang.String	int	
异  常:	无

方  法:	public int java.lang.String.lastIndexOf(int,int)
修饰符:	public
返回值:	int
方法名:	lastIndexOf
参  数:	int	int	
异  常:	无

方  法:	static int java.lang.String.lastIndexOf(char[],int,int,char[],int,int,int)
修饰符:	static
返回值:	int
方法名:	lastIndexOf
参  数:	class [C	int	int	class [C	int	int	int	
异  常:	无

方  法:	private int java.lang.String.lastIndexOfSupplementary(int,int)
修饰符:	private
返回值:	int
方法名:	lastIndexOfSupplementary
参  数:	int	int	
异  常:	无

方  法:	public int java.lang.String.length()
修饰符:	public
返回值:	int
方法名:	length
参  数:	无
异  常:	无

方  法:	public boolean java.lang.String.matches(java.lang.String)
修饰符:	public
返回值:	boolean
方法名:	matches
参  数:	class java.lang.String	
异  常:	无

方  法:	private boolean java.lang.String.nonSyncContentEquals(java.lang.AbstractStringBuilder)
修饰符:	private
返回值:	boolean
方法名:	nonSyncContentEquals
参  数:	class java.lang.AbstractStringBuilder	
异  常:	无

方  法:	public int java.lang.String.offsetByCodePoints(int,int)
修饰符:	public
返回值:	int
方法名:	offsetByCodePoints
参  数:	int	int	
异  常:	无

方  法:	public boolean java.lang.String.regionMatches(int,java.lang.String,int,int)
修饰符:	public
返回值:	boolean
方法名:	regionMatches
参  数:	int	class java.lang.String	int	int	
异  常:	无

方  法:	public boolean java.lang.String.regionMatches(boolean,int,java.lang.String,int,int)
修饰符:	public
返回值:	boolean
方法名:	regionMatches
参  数:	boolean	int	class java.lang.String	int	int	
异  常:	无

方  法:	public java.lang.String java.lang.String.replace(char,char)
修饰符:	public
返回值:	class java.lang.String
方法名:	replace
参  数:	char	char	
异  常:	无

方  法:	public java.lang.String java.lang.String.replace(java.lang.CharSequence,java.lang.CharSequence)
修饰符:	public
返回值:	class java.lang.String
方法名:	replace
参  数:	interface java.lang.CharSequence	interface java.lang.CharSequence	
异  常:	无

方  法:	public java.lang.String java.lang.String.replaceAll(java.lang.String,java.lang.String)
修饰符:	public
返回值:	class java.lang.String
方法名:	replaceAll
参  数:	class java.lang.String	class java.lang.String	
异  常:	无

方  法:	public java.lang.String java.lang.String.replaceFirst(java.lang.String,java.lang.String)
修饰符:	public
返回值:	class java.lang.String
方法名:	replaceFirst
参  数:	class java.lang.String	class java.lang.String	
异  常:	无

方  法:	public java.lang.String[] java.lang.String.split(java.lang.String)
修饰符:	public
返回值:	class [Ljava.lang.String;
方法名:	split
参  数:	class java.lang.String	
异  常:	无

方  法:	public java.lang.String[] java.lang.String.split(java.lang.String,int)
修饰符:	public
返回值:	class [Ljava.lang.String;
方法名:	split
参  数:	class java.lang.String	int	
异  常:	无

方  法:	public boolean java.lang.String.startsWith(java.lang.String,int)
修饰符:	public
返回值:	boolean
方法名:	startsWith
参  数:	class java.lang.String	int	
异  常:	无

方  法:	public boolean java.lang.String.startsWith(java.lang.String)
修饰符:	public
返回值:	boolean
方法名:	startsWith
参  数:	class java.lang.String	
异  常:	无

方  法:	public java.lang.CharSequence java.lang.String.subSequence(int,int)
修饰符:	public
返回值:	interface java.lang.CharSequence
方法名:	subSequence
参  数:	int	int	
异  常:	无

方  法:	public java.lang.String java.lang.String.substring(int)
修饰符:	public
返回值:	class java.lang.String
方法名:	substring
参  数:	int	
异  常:	无

方  法:	public java.lang.String java.lang.String.substring(int,int)
修饰符:	public
返回值:	class java.lang.String
方法名:	substring
参  数:	int	int	
异  常:	无

方  法:	public char[] java.lang.String.toCharArray()
修饰符:	public
返回值:	class [C
方法名:	toCharArray
参  数:	无
异  常:	无

方  法:	public java.lang.String java.lang.String.toLowerCase(java.util.Locale)
修饰符:	public
返回值:	class java.lang.String
方法名:	toLowerCase
参  数:	class java.util.Locale	
异  常:	无

方  法:	public java.lang.String java.lang.String.toLowerCase()
修饰符:	public
返回值:	class java.lang.String
方法名:	toLowerCase
参  数:	无
异  常:	无

方  法:	public java.lang.String java.lang.String.toUpperCase()
修饰符:	public
返回值:	class java.lang.String
方法名:	toUpperCase
参  数:	无
异  常:	无

方  法:	public java.lang.String java.lang.String.toUpperCase(java.util.Locale)
修饰符:	public
返回值:	class java.lang.String
方法名:	toUpperCase
参  数:	class java.util.Locale	
异  常:	无

方  法:	public java.lang.String java.lang.String.trim()
修饰符:	public
返回值:	class java.lang.String
方法名:	trim
参  数:	无
异  常:	无