类的成员包含变量(Field),方法(Method),构造器(Constructor)

类定义

  1. package Reflect;
  2.  
  3. public class MyTest {
  4. public int a;
  5. public static int b;
  6. public static final int c = 0;
  7. private int d;
  8.  
  9. public int sum(int a, int b, String c) {
  10. return a + b;
  11. }
  12.  
  13. public int sub(int a, int b, String c) {
  14. return a - b;
  15. }
  16.  
  17. MyTest() {
  18.  
  19. }
  20.  
  21. MyTest(int a, int b) {
  22.  
  23. }
  24. }

1.获取变量

  1. package Reflect;
  2.  
  3. import java.lang.reflect.Constructor;
  4. import java.lang.reflect.Field;
  5. import java.lang.reflect.Method;
  6. import java.lang.reflect.Modifier;
  7.  
  8. public class Test {
  9. public static void main(String[] args) {
  10. System.out.println(MyTest.class);
  11. final Class<?> clazz = MyTest.class;
  12. System.out.println(clazz.getClass());
  13. final Field[] fields = clazz.getDeclaredFields();
  14.  
  15. System.out.println("====print fields===");
  16. for (final Field f : fields) {
  17. System.out.print(f.getName() + "->");
  18. System.out.print(f.getModifiers() + "->");
  19. System.out.println(Modifier.toString(f.getModifiers()));
  20. }
  21.  
  22. }
    输出:
    class Reflect.MyTest
    class java.lang.Class
    ====print fields===
    a->1->public
    b->9->public static
    c->25->public static final
    d->2->private

2.获取方法

  1. package Reflect;
  2.  
  3. import java.lang.reflect.Constructor;
  4. import java.lang.reflect.Field;
  5. import java.lang.reflect.Method;
  6. import java.lang.reflect.Modifier;
  7.  
  8. public class Test {
  9. public static void main(String[] args) {
  10. System.out.println(MyTest.class);
  11. final Class<?> clazz = MyTest.class;
  12. System.out.println(clazz.getClass());
  13. final Field[] fields = clazz.getDeclaredFields();
  14.  
  15. System.out.println("====print Method===");
  16. final Method[] ms = clazz.getMethods();
  17. for (final Method m : ms) {
  18. System.out.println();
  19. System.out.print(m.getName() + "==||");
  20. System.out.print(m.getReturnType().getName() + "==||");
  21. for (final Class o : m.getParameterTypes()) {
  22. System.out.print(",==" + o.getName());
  23. }
  24. }
  25.  
  26. }
  27. }
    输出:
    ====print Method===
    sum==||int==||,==int,==int,==java.lang.String
    sub==||int==||,==int,==int,==java.lang.String
    wait==||void==||
    wait==||void==||,==long,==int
    wait==||void==||,==long
    hashCode==||int==||
    getClass==||java.lang.Class==||
    equals==||boolean==||,==java.lang.Object
    toString==||java.lang.String==||
    notify==||void==||
    notifyAll==||void==||

3.获取构造器

  1. package Reflect;
  2.  
  3. import java.lang.reflect.Constructor;
  4. import java.lang.reflect.Field;
  5. import java.lang.reflect.Method;
  6. import java.lang.reflect.Modifier;
  7.  
  8. public class Test {
  9. public static void main(String[] args) {
  10. System.out.println(MyTest.class);
  11. final Class<?> clazz = MyTest.class;
  12. System.out.println(clazz.getClass());
  13.  
  14. System.out.println();
  15. System.out.println("====print Constructor===");
  16. final Constructor[] cs = clazz.getDeclaredConstructors();
  17. for (final Constructor c : cs) {
  18. System.out.println();
  19. System.out.print(c.getName());
  20. for (final Class o : c.getParameterTypes()) {
  21. System.out.print(",==" + o.getName());
  22. }
  23. }
  24.  
  25. }
  26. }
  27.  
  28. 输出:
    ====print Constructor===
    Reflect.MyTest
    Reflect.MyTest,==int,==int
  1.  

java reflect反射获取方法变量参数的更多相关文章

  1. java通过反射获取调用变量以及方法

    一:反射概念 可以通过Class类获取某个类的成员变量以及方法,并且调用之. 二:通过反射获取方法.变量.构造方法 @Test // 通过反射获取类定义的方法 public void testMeth ...

  2. 通过反射获取方法的参数名称(JDK8以上支持)

    方法的参数名,在很多时候我们是需要反射得到的.但是在java8之前,代码编译为class文件后,方法参数的类型是固定的,但参数名称却丢失了,这和动态语言严重依赖参数名称形成了鲜明对比.(java是静态 ...

  3. java reflect反射调用方法invoke

    类定义 package Reflect; public class MyTest { public int a; public static int b; public static final in ...

  4. Android(java)学习笔记109:通过反射获取成员变量和成员方法并且使用

    一.反射获取成员变量并且使用: 1.获取字节码文件对象:         Class c = Class.forName("cn.itcast_01.Person"); 2.使用无 ...

  5. Android(java)学习笔记50:通过反射获取成员变量和成员方法并且使用

    1. 反射获取成员变量并且使用: (1)获取字节码文件对象:         Class c = Class.forName("cn.itcast_01.Person"); (2) ...

  6. java 27 - 4 反射之 通过反射获取成员变量并使用

    类Field: 提供有关类或接口的单个字段的信息,以及对它的动态访问权限. A:获得类的成员变量 数组: 1.getFields(公共类的) 2.getDeclaredFields(所有类型的) B: ...

  7. Spring LocalVariableTableParameterNameDiscoverer获取方法的参数名

    Spring LocalVariableTableParameterNameDiscoverer获取方法的参数名 问题:Java.lang.reflect 包中提供了很多方法,获取所有的方法,获取所有 ...

  8. java利用反射获取类的属性及类型

    java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...

  9. <经验杂谈>C#中一种最简单、最基本的反射(Reflection):通过反射获取方法函数

    说起反射之前和很多用C#/.net的同仁们一样,相比于一般应用层对数据的增删改查总有点觉得深奥到难以理解.其实程序这东西,用过.实践过就很简单,我一直这么认为. 先说下概念:反射 Reflection ...

随机推荐

  1. elasticsearch mapping demo

    curl -XPUT localhost:9200/local -d '{ "settings" : { "analysis" : { "analyz ...

  2. SpringBoot工程+热部署进行远程调试

    本文转载自:https://blog.csdn.net/qq_31868349/article/details/78553901 SpringBoot工程+热部署进行远程调试 本地端添加配置 在pom ...

  3. 身高安排方法(基础dfs)

    P1085 时间限制: 0 Sec  内存限制: 128 MB提交: 64  解决: 44[提交][状态][讨论版][命题人:外部导入] 题目描述 Matrix67发现身高接近的人似乎更合得来.Mat ...

  4. Java-Runoob-高级教程-实例-方法:12. Java 实例 – Enum(枚举)构造函数及方法的使用-um

    ylbtech-Java-Runoob-高级教程-实例-方法:12. Java 实例 – Enum(枚举)构造函数及方法的使用 1.返回顶部 1. Java 实例 - Enum(枚举)构造函数及方法的 ...

  5. absolute之后居中宽度自适应

    position:absolute;之后居中宽度自适应,不用再设定宽度了   css代码如下: .promptBox{display:none;border:1px solid #ccc;paddin ...

  6. MySQL binlog 企业案例升级版

    需求:1.创建一个数据库 oldboy2.在oldboy下创建一张表t13.插入5行任意数据4.全备5.插入两行数据,任意修改3行数据,删除1行数据6.删除所有数据7.再t1中又插入5行新数据,修改3 ...

  7. [UE4]先报告后广播模式

    解决客户端射击,在服务器端和其他客户端看不到的问题. 一.把要广播的操作封装成一个事件(函数不支持网络属性),选择“多路传送” 二.创建一个事件,选择“在服务器上运行” 总结:从客户端执行的事件报告到 ...

  8. androidstudio在创建new project时,窗口太大,看不到下面确定按钮的解决方法

    点击File-->setting-->Appearance将里面的Override default fonts by(not recommended)打钩去掉. 这个是目前找到唯一办法.

  9. Android接听、挂断电话

    新建一个名为ITelephony的aidl文件,注意包名不能改变,因为是通过反射方式来实现接听和挂断的

  10. SAS 数值转日期

    DATA _NULL_;FORMAT A YYMMDDN8.;B=PUT(20180101,$8.);A=INPUT(B,YYMMDD8.);PUT B= A=;RUN; 输出:47   DATA _ ...