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 ...
随机推荐
- 【ApplicationContext】通过实现ApplicationContextAware接口获取bean
SpringApplicationUtils.java import org.springframework.beans.BeansException; import org.springframew ...
- Spring @Async实现异步调用示例
什么是“异步调用”? “异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行:异步调用指程序在顺序执行时,不等待异步调用的语句返回结果 ...
- mybatis 报错Result Maps collection does not contain value for java.lang.Integer
重点:报错的方法和xml文件不一定是错误的位置,如果有多个xml文件,必须检查所有的文件 搜索 resultMap="java.lang.Integer" 找到对应的文件,改为 ...
- 廖雪峰Java4反射与泛型-1反射-4调用构造方法
1.Class.newInstance()只能调用public的无参数构造方法 public class Main { public static void main(String[] args) t ...
- [UE4]小技巧:自动添加函数返回值
将一个变量拖放到返回节点上面会自动创建响应类型的返回值 同样的,函数参数也可以这样来做:
- 实现textview竖排文字效果
文字效果
- 关于promise的几个认知
1. 为什么要有promise ···从代码上来说回避了回调嵌套的问题,其次promise可以保留异步请求的状态(即使得到结果不立刻执行回调,过一阵再执行仍然是可以的.) ···从思想上来说,我们设计 ...
- 高通9X07模块QMI架构使用入门
QMI(Qualcomm Message Interface) 高通用来替代OneRPC/DM的协议,用来与modem通信.本文是摸索高通QMI机制一点经验,重点解读了如果建立拨号连接,仅供参考.qm ...
- 第11章 拾遗5:IPv6和IPv4共存技术(2)_ISATAP隧道技术
6.3 ISATAP隧道技术 (1)基本概念 ①在一个IPv4网络中主机与路由器之间创建一条ISATAP隧道,以便让该主机可以访问IPv6网络中的资源. ②条件:IPv4中的PC主机需要支持IPv4和 ...
- C++连接mysql及遇到的相关问题
最近接触了很多数据库的东西,本来是一直接触的是sql server,不过由于项目需要就开始对mysql进行了连接.下面就让我这个菜鸟浅谈下经验吧. 对于C++连接mysql,我不太喜欢多下载一个软件m ...