反射获取类属性和方法的调用
来源:互联网 发布:微时代网络 编辑:程序博客网 时间:2024/05/21 11:10
package io.stream;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;public class ReflectTest {public static void main(String[] args) {// test1();// test2();// test3();// test4();// test5();// test6();test7();}private static void test7() {// 得到并调用指定的方法(带参数)Class<?> cl;try {cl = Class.forName("io.stream.Student");Object obj = cl.newInstance();Class<?>[] paras={String.class,int.class}; Method me=cl.getDeclaredMethod("sayHello", paras);//得到方法Object[] val={"dd",2};//把参数存进数组,参数数组为Object类型Object objval = me.invoke(obj, val);//执行带参数的方法System.out.println(objval);//输出返回值} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void test6() {// 得到并调用指定的方法try {Class<?> cl = Class.forName("io.stream.Student");Object obj = cl.newInstance();Method me = cl.getMethod("sayHi", null);// 得到方法Object objval = me.invoke(obj, null);// 执行方法,普通方法执行用invokeSystem.out.println(objval);// 得到执行方法的返回值} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void test5() {// 得到所有的方法try {Class<?> cl = Class.forName("io.stream.Student");Method[] me = cl.getDeclaredMethods();for (Method m : me) {System.out.println(m.getName() + "\t" + m.getTypeParameters()+ "\t" + m.getReturnType().getName() + "\t"+ Modifier.toString(m.getModifiers()));}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void test4() {// 得到并调用带参的构造方法try {Class<?> cl = Class.forName("io.stream.Student");Constructor<?> c = cl.getDeclaredConstructor(String.class,String.class, int.class);//得到构造方法Object obj = c.newInstance("01", "王安石", 40);//构造方法执行用newInstance方法// System.out.println("ff");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void test3() {// 得到并调用无参构造方法try {Class<?> cl = Class.forName("io.stream.Student");Constructor<?>[] con = cl.getDeclaredConstructors();System.out.println(con.length);Constructor<?> c = cl.getDeclaredConstructor(null);// 得到无参构造方法Object obj = c.newInstance(null);// 新建一个实例} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void test2() {// TODO Auto-generated method stubClass cl;try {cl = Class.forName("io.stream.Student");Object obj = cl.newInstance();Field f = cl.getDeclaredField("stuName");f.setAccessible(true);//设置私有的可以访问f.set(obj, "李商隐");System.out.println(f.get(obj));} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void test1() {// TODO Auto-generated method stubtry {Class<?> cl = Class.forName("io.stream.Student");// Object obj=cl.getInterfaces();Field[] fl = cl.getDeclaredFields();//得到属性(字段)for (Field f : fl) {System.out.println(f.getName() + "\t" + f.getType() + "\t"+ f.getModifiers() + "\t"+ Modifier.toString(f.getModifiers()));}Field f = cl.getDeclaredField("stuid");System.out.println(f.getName() + "\t" + f.getType() + "\t"+ f.getModifiers() + "\t"+ Modifier.toString(f.getModifiers()));} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
阅读全文
0 0
- Java反射机制获取/调用类的属性和方法
- 反射获取类属性和方法的调用
- java 通过反射获得类的属性和调用方法
- 通过反射获取类的所有属性和方法
- Java反射获取类的属性值和方法
- 反射2:获取类的方法(通过方法名调用方法),属性,声明
- 反射获取属性和方法
- 通过反射获取类属性字段 以及 调用类方法
- java 通过反射获取调用类方法及属性
- Java反射之获取私有公共的属性和方法
- 反射之读取类信息、调用类属性和方法
- 使用反射调用私有属性和方法
- 通过反射调用方法和操作属性
- 反射方式获取父类中的所有属性和方法
- 通过反射获取超类属性和方法
- java反射获取类的属性名和属性值
- Java通过反射调用其他类的私有属性和私有方法
- 用反射的方式获取父类中的所有属性和方法
- Unity3d--让我们的小坦克动起来
- 2017-09-12 LeetCode_026 Remove Duplicates from Sorted Array
- c# socket 客户端异步实现
- hdu 1022 Train Problem I(栈的操作);
- 聊微服务:先做好你的服务拆分
- 反射获取类属性和方法的调用
- 解决中文参数出现的乱码问题
- 关于java.math.BigInteger cannot be cast to java.lang.Integer小方法
- JSP的标签文件
- .html(),.text()和.val()
- itext7学习笔记——第4章
- bootstrap 基础(一)
- Android Studio创建项目失败
- CNN求导