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) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也 ...
随机推荐
- MongoDB性能分析
# mongostat --host=100.150.2.12 --port=27017 --authenticationDatabase=admin --username=root --passwo ...
- E:\Postgresql\pgAdmin4_binaryPath
e Path to the directory containing the EDB Advanced Server utility programs (pg_dump, pg_restore etc ...
- Git学习及使用
一.认知git理论 1.git出现的背景 版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上 ...
- 大数据学习笔记之Zookeeper(三):Zookeeper理论篇(二)
文章目录 3.1 数据结构 3.2 节点类型 3.3 特点 3.4 选举机制 3.5 stat结构体 3.6 监听器原理 3.1 数据结构 ZooKeeper数据模型的结构与Unix文件系统很类似,整 ...
- Vagrant 手册之 box - 概述
原文地址 box 是 Vagrant 环境中使用的包格式.box 可以在 Vagrant 支持的所有平台上被任何人使用,从而提供相同的工作环境. vagrant box 工具提供了管理 box 的所有 ...
- hdu6575Budget
Problem Description Avin’s company has many ongoing projects with different budgets. His company rec ...
- upc组队赛17 Greatest Common Divisor【gcd+最小质因数】
Greatest Common Divisor 题目链接 题目描述 There is an array of length n, containing only positive numbers. N ...
- 3.创建线程的第二种写法,继承threading.Tread类,重写run方法
#创建线程的第二种写法 #1.自定义一个类 #2.继承Thread #3.重写run()方法 import threading,time,random class MyThread(threading ...
- Java稀疏数组
一.概述 1.概念 2.处理方法 3.示例 原数组如下: 转换为稀疏数组如下: 二.代码 1.主方法 @Testpublic void SparseTest() { // 创建一个原始的二维数组 11 ...
- aspnet core in docker
1 创建一个文件夹(app), 将项目发布后的文件放入该文件夹中 并且创建Dockerfile文件 2 打开Dockerfile文件,编辑一下内容 #基于 `microsoft/dotnet:-cor ...