Java反射学习-4 - 反射调用方法
反射调用方法:
package cn.tx.reflect; import java.lang.reflect.Constructor;
import java.lang.reflect.Method; /**
* 反射调用方法
* Object java.lang.reflect.Method.invoke(Object obj, Object... args)
* 如果底层方法是实例方法,第一个参数就是该实例对象,第二个参数是方法的参数列表,invoke的返回值就是实例方法的返回值
* 如果底层方法是静态的,那么可以忽略指定的obj参数,可以为null
* 如果底层方法所需的形参为0,则所提供的args数组长度可以为0或null(参见后面的method2.invoke(object))
* @author Administrator
*
*/
public class ReflectLearn4 {
public static void main(String[] args) throws Exception { Class<?> clazz = Class.forName("cn.tx.reflect.Person");
//获取cn.tx.Person类的无参构造
Constructor<?> constructor = clazz.getConstructor();
//获取一个实例
Object object = constructor.newInstance(); //反射调用setName()方法:method.invoke,返回的就是调用的方法的返回值
Method method = clazz.getDeclaredMethod("setName", String.class);
Object invoke = method.invoke(object, "james");//set方法,没有返回值,此处invoke是 null
System.out.println(object.toString()); //Person [address=null, id=null, name=james] //反射调用getName()方法
Method method2 = clazz.getDeclaredMethod("getName");
Object invoke2 = method2.invoke(object);
System.out.println(invoke2); //反射调用静态方法
Method method3 = clazz.getDeclaredMethod("printInfo",null); //printInfo方法没有参数,写null
method3.invoke(null,null);//静态方法,第一个参数可以为null } }
结果如下:

Java反射学习-4 - 反射调用方法的更多相关文章
- Java反射学习-3 - 反射获取属性,方法,构造器
package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ...
- java 日常学习记录-反射
Hero类 package helloworld; public class Hero { public String name; //姓名 public float hp; //血量 public ...
- 【java基础学习】反射
1. 什么是反射 Class.Method.Field.Constructor,它们是反射对象.它们是类.方法.成员变量.构造器,在内存中的形式. 也就是万物皆对象!类是类型.方法是类型.成员变量是类 ...
- Java基础学习(1)——反射
反射就是把Java类中的各种成分映射成相应的Java类(主要用于框架开发) 反射的基石–>Class类 Java程序中的各个类属于同一事物,描述这类事务的Java类名就是Class. Class ...
- Java反射学习-5 - 反射复制对象
通过反射方式复制对象: package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Fi ...
- Java设计模式学习笔记(三) 工厂方法模式
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 简介 上一篇博客介绍了简单工厂模式,简单工厂模式存在一个很严重的问题: 就是当系统需要引入 ...
- Java反射学习-1 - 反射获取类的属性,方法,构造器
新建一个Person类 package cn.tx.reflect; /** * 注解初步了解 * @author Administrator * */ public class Person { p ...
- java反射学习之一反射机制概述
一.反射机制背景概述 1.反射(reflection)是java被视为动态语言的一个关键性质 2.反射机制指的是程序在运行时能获取任何类的内部所有信息 二.反射机制实现功能概述 1.只要给定类的全名, ...
- java===java基础学习(12)---方法的重写和重载
覆盖 / 重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也 ...
随机推荐
- php面试专题---17、MySQL的SQL语句编写考点
php面试专题---17.MySQL的SQL语句编写考点 一.总结 一句话总结: 注意:只写精品 1.MySQL的关联UPDATE语句? 关键UPDATE A,B:UPDATE A,B SET A.c ...
- PHP 三元运算符?:的小坑
$a = ['result'=123]; $b = !empty($a['result'])?:-1; $c = !empty($a['result'])?$a['result']:-1; var_d ...
- scrapy-redis debug视频
前言 在上一篇笔记说过会录个视频帮助理解里面的类方法,现在视频来了.只录了debug scheduler.py里面的类方法,还有spiders.py里面的类方法差不多,就不说了,自己动手丰衣足食.限于 ...
- JavaScript-[[prototype]]的另一种理解
[[prototype]]简介 javascript 中每一个对象都会有一个特殊的内置属性[[prototype]],这个就是对其他对象对引用.有了这个作为基础去关联其他对象,就能理解继承机制.Chr ...
- SqlServer 事物
Ø 事务 在数据库中有时候需要把多个步骤的指令当作一个整体来运行,这个整体要么全部成功,要么全部失败,这就需要用到事务. 1. 事务的特点 事务有若干条T-SQL指令组成,并且所有的指令昨晚一个整体提 ...
- 机器学习实战笔记-11-Apriori与FP-Growth算法
Apriori算法 优点:易编码实现:缺点:大数据集上较慢:适用于:数值型或标称型数据. 关联分析:寻找频繁项集(经常出现在一起的物品的集合)或关联规则(两种物品之间的关联关系). 概念:支持度:数据 ...
- JS动态添加Easyui的HTML时样式丢失
解决办法: $.parser.parse($("#creatLi").html(<li>xxxxxx</li>)); ------------------- ...
- JS的两种函数声明方式的区别
---恢复内容开始--- js中常见的两种函数声明方式如下: // 函数表达式 var f = function() { console.log(1); } // 直接声明 function f () ...
- go 学习之io/ioutil包
// Discard 是一个 io.Writer 接口,调用它的 Write 方法将不做任何事情// 并且始终成功返回.var Discard io.Writer = devNull(0) // Re ...
- oracle更新数据库密码
今天忘记了system的密码,记录一下. sqlpls / as sysdba alter user system identified by "GYSUhbyqwgu" ...