当前位置:网站首页>Reflect 机制获取Class 的属性和方法信息
Reflect 机制获取Class 的属性和方法信息
2022-07-28 11:11:00 【爱码少年】
反射机制获取类的属性和方法信息
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
参 数: 无
异 常: 无
边栏推荐
- [MySQL] query multiple IDs and return string splicing
- 一种比读写锁更快的锁,还不赶紧认识一下
- Boutique scheme | Haitai Fangyuan full stack data security management scheme sets a "security lock" for data
- 移动端人脸风格化技术的应用
- 对话庄表伟:开源第一课
- 天狼星网络验证源码/官方正版/内附搭建教程
- [applet] how to notify users of wechat applet version update?
- Dialogue with Zhuang biaowei: the first lesson of open source
- MySQL离线同步到odps的时候 可以配置动态分区吗
- Open source huizhichuang future | 2022 open atom global open source summit openatom openeuler sub forum was successfully held
猜你喜欢

Design a system that supports millions of users

A hundred flowers bloom in data analysis engines. Why invest heavily in Clickhouse?

Cvpr2020 best paper: unsupervised learning of symmetric deformable 3D objects

Solutions to the disappearance of Jupiter, spyder, Anaconda prompt and navigator shortcut keys

Techniques for visualizing large time series.

移动端人脸风格化技术的应用

Autumn recruit offer harvesters, and take the offers of major manufacturers at will

Sirius network verification source code / official genuine / included building tutorial

Top ten application development trends from 2022 to 2023

Open source huizhichuang future | 2022 open atom global open source summit openatom openeuler sub forum was successfully held
随机推荐
天狼星网络验证源码/官方正版/内附搭建教程
擦黑板特效表白H5源码+非常浪漫/附BGM
STM32 drives st7701s chip (V ⅰ V0 mobile phone screen change price)
ASP. Net core 6 framework unveiling example demonstration [29]: building a file server
R language ggplot2 visualization: use the ggboxplot function of ggpubr package to visualize the box diagram and customize the fill parameter to configure the filling color of the box
Rongyun IM & RTC capabilities on new sites
Using C language to compile student achievement management system (C language student achievement management system deleted)
[pyGame practice] when the end of the world comes, how long can you live in a cruel survival game that really starts from scratch?
R language ggplot2 visualization: use the ggdotplot function of ggpubr package to visualize the grouped dot plot, set the palette parameter, and set the color of data points in different grouped dot p
Router firmware decryption idea
Database advanced learning notes - system package
Why does acid food hurt teeth + early periodontitis
Why does MySQL sometimes choose the wrong index?
Summary of common RSA related problems in CTF: basic RSA encryption and decryption
Detailed explanations of%*d,%.*s, etc. of [C language]: "recommended collection"
Several reincarnation stories
Thinkphp5 behavior hook return result (data) example
Cvpr2020 best paper: unsupervised learning of symmetric deformable 3D objects
Jupiter、spyder、Anaconda Prompt 、navigator 快捷键消失的解决办法
R language uses LM function to build regression model and regression model for transformed data (for example, it is necessary to build regression model for X and y, but they have no linear relationshi