反射机制获取类的属性和方法信息
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
参 数: 无
异 常: 无