java reflect反射获取方法变量参数
类的成员包含变量(Field),方法(Method),构造器(Constructor)
类定义
- package Reflect;
- public class MyTest {
- public int a;
- public static int b;
- public static final int c = 0;
- private int d;
- public int sum(int a, int b, String c) {
- return a + b;
- }
- public int sub(int a, int b, String c) {
- return a - b;
- }
- MyTest() {
- }
- MyTest(int a, int b) {
- }
- }
1.获取变量
- package Reflect;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.lang.reflect.Modifier;
- public class Test {
- public static void main(String[] args) {
- System.out.println(MyTest.class);
- final Class<?> clazz = MyTest.class;
- System.out.println(clazz.getClass());
- final Field[] fields = clazz.getDeclaredFields();
- System.out.println("====print fields===");
- for (final Field f : fields) {
- System.out.print(f.getName() + "->");
- System.out.print(f.getModifiers() + "->");
- System.out.println(Modifier.toString(f.getModifiers()));
- }
- }
输出:
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.获取方法
- package Reflect;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.lang.reflect.Modifier;
- public class Test {
- public static void main(String[] args) {
- System.out.println(MyTest.class);
- final Class<?> clazz = MyTest.class;
- System.out.println(clazz.getClass());
- final Field[] fields = clazz.getDeclaredFields();
- System.out.println("====print Method===");
- final Method[] ms = clazz.getMethods();
- for (final Method m : ms) {
- System.out.println();
- System.out.print(m.getName() + "==||");
- System.out.print(m.getReturnType().getName() + "==||");
- for (final Class o : m.getParameterTypes()) {
- System.out.print(",==" + o.getName());
- }
- }
- }
- }
输出:
====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.获取构造器
- package Reflect;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.lang.reflect.Modifier;
- public class Test {
- public static void main(String[] args) {
- System.out.println(MyTest.class);
- final Class<?> clazz = MyTest.class;
- System.out.println(clazz.getClass());
- System.out.println();
- System.out.println("====print Constructor===");
- final Constructor[] cs = clazz.getDeclaredConstructors();
- for (final Constructor c : cs) {
- System.out.println();
- System.out.print(c.getName());
- for (final Class o : c.getParameterTypes()) {
- System.out.print(",==" + o.getName());
- }
- }
- }
- }
- 输出:
====print Constructor===
Reflect.MyTest
Reflect.MyTest,==int,==int
java reflect反射获取方法变量参数的更多相关文章
- java通过反射获取调用变量以及方法
一:反射概念 可以通过Class类获取某个类的成员变量以及方法,并且调用之. 二:通过反射获取方法.变量.构造方法 @Test // 通过反射获取类定义的方法 public void testMeth ...
- 通过反射获取方法的参数名称(JDK8以上支持)
方法的参数名,在很多时候我们是需要反射得到的.但是在java8之前,代码编译为class文件后,方法参数的类型是固定的,但参数名称却丢失了,这和动态语言严重依赖参数名称形成了鲜明对比.(java是静态 ...
- java reflect反射调用方法invoke
类定义 package Reflect; public class MyTest { public int a; public static int b; public static final in ...
- Android(java)学习笔记109:通过反射获取成员变量和成员方法并且使用
一.反射获取成员变量并且使用: 1.获取字节码文件对象: Class c = Class.forName("cn.itcast_01.Person"); 2.使用无 ...
- Android(java)学习笔记50:通过反射获取成员变量和成员方法并且使用
1. 反射获取成员变量并且使用: (1)获取字节码文件对象: Class c = Class.forName("cn.itcast_01.Person"); (2) ...
- java 27 - 4 反射之 通过反射获取成员变量并使用
类Field: 提供有关类或接口的单个字段的信息,以及对它的动态访问权限. A:获得类的成员变量 数组: 1.getFields(公共类的) 2.getDeclaredFields(所有类型的) B: ...
- Spring LocalVariableTableParameterNameDiscoverer获取方法的参数名
Spring LocalVariableTableParameterNameDiscoverer获取方法的参数名 问题:Java.lang.reflect 包中提供了很多方法,获取所有的方法,获取所有 ...
- java利用反射获取类的属性及类型
java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...
- <经验杂谈>C#中一种最简单、最基本的反射(Reflection):通过反射获取方法函数
说起反射之前和很多用C#/.net的同仁们一样,相比于一般应用层对数据的增删改查总有点觉得深奥到难以理解.其实程序这东西,用过.实践过就很简单,我一直这么认为. 先说下概念:反射 Reflection ...
随机推荐
- PHP 遍历文件夹下的文件以及子文件夹
// 递归的方式实现function my_dir( $dir ){ if ( !is_dir($dir) ) { return 'not dir';die(); } $files = array() ...
- LibreOffice转换文档到pdf时中文乱码
根据我的测试,LibreOffice转换文档到pdf乱码主要有三个方面的原因: 1.centos缺少中文字体 2.jdk缺少中文字体 3.LibreOffice缺少中文字体. 解决该问题需要将wind ...
- windows 下跟踪日志的几个工具总结
1.baretailpro.exe 2.wintail.exe 3.vim(using tail bundle plugin) 4.Notepad++ (Plugin->Plugin Manag ...
- springmvc学习(五)
这次主要是记录一下 springmvc 关于异常处理 和 拦截的回顾 关于springmvc 异常处理:springmvc 提供了 HandlerExceptionResolver 异常处理解析接 ...
- MySQL事务提交过程(转载)
http://blog.csdn.net/sofia1217/article/details/53968214 上一篇文章我们介绍了在关闭binlog的情况下,事务提交的大概流程.之所以关闭binlo ...
- webpack + vuejs(都是1.0的版本) 基本配置(一)
开始之前 本文包含以下技术,文中尽量给与详细的描述,并且附上参考链接,读者可以深入学习: 1.webpack12.Vue.js13.npm4.nodejs —- 这个就不给连接了,因为上面的连接都是在 ...
- tf.nn.dynamic_rnn
tf.nn.dynamic_rnn(cell,inputs,sequence_length=None, initial_state=None,dtype=None, parallel_iteratio ...
- mdm9607 gpio12~17改成普通gpio的方法
qualcomm mdm9607的gpio12~gpio17定义如下: 现在如果想要设置GPIO_12~GPIO_17为普通GPIO口. 需要修改如下: 顺便附上qualcomm的说明: Remove ...
- gulp 使用案例
1.gulp 配置: // 引入 gulp var gulp = require('gulp'); var watch = require('gulp-watch'), //导入所有gulp需要的模块 ...
- js对象以及DOM
JavaScript的对象 在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,String.Math.Array.Date.R ...