Java知识点总结(反射-获取类的信息)

 2023-09-16 阅读 23 评论 0

摘要:Java知识点总结(反射-获取类的信息) @(Java知识点总结)[Java, 反射] 应用反射的API,获取类的信息(类的名字、属性、方法、构造器等) import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method;publ

Java知识点总结(反射-获取类的信息)

@(Java知识点总结)[Java, 反射]

应用反射的API,获取类的信息(类的名字、属性、方法、构造器等)


import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;public class Test02 {// 获取类名private static void getName(Class clazz){String name = clazz.getName();System.out.println(name); // com.gs.Student 类的全路径名称String simpleName = clazz.getSimpleName() ;System.out.println(simpleName); // Student 类名}// 获取属性信息private static void getFields(Class clazz){Field[] fields = clazz.getFields() ; // 只能获取 public 的属性for (Field f : fields) {System.out.println(f);  // public double com.gs.Student.score}Field[] declaredFields = clazz.getDeclaredFields() ; // 获取所有的属性for (Field df : declaredFields) {System.out.println(df);}try {Field field = clazz.getField("score"); //根据属性名称获取public 属性System.out.println(field);Field declaredField = clazz.getDeclaredField("name");System.out.println(declaredField); //根据属性名称获取 private 属性} catch (NoSuchFieldException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();}}// 获取方法信息public static void getMethod(Class clazz){Method[] methods = clazz.getMethods() ; //获取所有的 public 方法,包括父类的方法for (Method m : methods) {System.out.println(m);}System.out.println("~~~~~~~~~~~");Method[] declaredMethods = clazz.getDeclaredMethods(); // 获取本类声明的所有的方法for (Method dm : declaredMethods) {System.out.println(dm);}try {Method m = clazz.getMethod("getName", null); //获取指定名字的方法,后面的形参表示获取方法的参数类类型System.out.println(m);//如果方法有参,则必须传递参数类型对应的 Class 对象 Method dm = clazz.getDeclaredMethod("setName", String.class);System.out.println(dm);} catch (NoSuchMethodException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();}}// 获取构造方法信息public static void getConstructor(Class clazz){try {// 获取指定名称的构造方法Constructor c = clazz.getDeclaredConstructor(int.class,String.class);System.out.println(c);//获取所有构造方法Constructor[] cs= clazz.getConstructors() ;for (Constructor constructor : cs) {System.out.println(constructor);}} catch (NoSuchMethodException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();}}public static void main(String[] args) {String path = "com.gs.Student";try {Class clazz = Class.forName(path);//getName(clazz);//getFields(clazz);//getMethod(clazz);getConstructor(clazz);} catch (ClassNotFoundException e) {e.printStackTrace();}}
}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/68585.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息