Java通过反射实现实例化
public static void main(String[] args) throws Exception { User user= (User) test(User.class);
System.out.println(user.getMoney());
invokeTest(user,"getMoneyT");
} /**通过反射获取实例
* @param clazz类,如user.class
* @return 类实例
* @throws Exception
*/
static Object test(Class clazz) throws Exception{
//clazz.newInstance();//实例化一个类,前提是该类存在无参构造参数
Constructor constructor=clazz.getConstructor(String.class);//得到构造器,String.class是即将实例化类clazz的构造参数的类型
Object obj= constructor.newInstance("test");//传入一个参数进行实例化
return obj;
}
/**调用指定方法
* @param obj对象
* @param methodName要调用的方法名
* @throws Exception
*/
static void invokeTest(Object obj,String methodName) throws Exception{
Method[] ms= obj.getClass().getDeclaredMethods();//当前类的方法,包括私有
//ms=obj.getClass().getMethods();//子类 父类的所有公共方法
for(Method m:ms){
System.out.println(m.getName());
if (m.getName().equals(methodName)) {
m.invoke(obj, null);//调用无参方法
} }
Method methods=obj.getClass().getMethod(methodName, null);//根据方法名和参数直接调用方法,方法无参传null
methods.invoke(obj, null);
}
/**通过反射获取字段
* @param clazz
* @throws Exception
*/
static void filed(Class clazz) throws Exception{
Field[] fs=clazz.getDeclaredFields();//当前类的字段,包括私有
//fs=clazz.getFields();//所有公共字段
for (Field field : fs) {
System.out.println(field.getName());
}
}
Java通过反射实现实例化的更多相关文章
- JAVA的反射理解
1----------------------------反射的概念----------------------------------------------- JAVA的反射机制是在运行状态中,对 ...
- Java 类反射机制分析
Java 类反射机制分析 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某 ...
- Java:反射
初识Java反射机制: 从上面的描述可以看出Java的反射机制使得Java语言可以在运行时去认识在编译时并不了解的类/对象的信息,并且能够调用相应的方法或修改属性的值.Java反射机制的核心就是允许在 ...
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
一.Java的反射机制 每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图: 其中
- java笔记--反射进阶之总结与详解
一.反射进阶之动态设置类的私有域 "封装"是Java的三大特性之一,为了能更好保证其封装性,我们往往需要将域设置成私有的, 然后通过提供相对应的set和get方法来操作这个域.但是 ...
- java笔记--反射机制之基础总结与详解
一.反射之实例化Class类的5种方式: java的数据类型可以分为两类,即引用类型和原始类型(即基本数据类型). 对于每种类型的对象,java虚拟机会实例化不可变的java.lang.Class对象 ...
- java中反射学习整理
转载请注明:http://blog.csdn.net/j903829182/article/details/38405735 反射主要是指程序能够訪问.检測和改动它本身的状态或行为的一种能力. jav ...
- Java使用反射机制优化工厂方法
我先举个例子,有一个接口People,这个接口有一个方法: package com.wjy.reflect; public interface People { public abstract voi ...
- java笔录---反射机制(1)
引言 为了方便记忆java的反射机制,在这里仔细的总结了一下.主要是怕以后忘记了,这样也方便回忆.因为最近利用空余时间深入的了解spring和Mybatis框架, 像spring中核心模块IO ...
随机推荐
- Django组件总结
Django组件介绍 分页器的使用 分页器在页面中非常常见,当数据库条数数据过多时,页面一次性显示不好看时,我们可以使用分页器,将数据分几次显示. 1.1 数据库内插入大量数据 Booklist=[] ...
- React 实现input输入框的防抖和节流
1.为什么使用防抖和节流对于频繁触发的事件 比如keydown keyup事件 当频繁点击时候 会多次触发事件 页面出现卡顿 影响性能 2.函数防抖(debounce):间隔时间内只执行一次 函数 ...
- Qt 解析命令行参数
#include <QGuiApplication> #include <QQmlApplicationEngine> #include <QQuickView> ...
- 68 for循环2 for循环最简单的用法
#include <stdio.h> int main (void) { int i ; ; ; i<; i+=) //i+=2 等价于 i= i+2: { sum = sum + ...
- redis 基础操作教程
1.linux 安装redis : Linux 下安装 下载地址:http://redis.io/download,下载最新稳定版本. 本教程使用的最新文档版本为 2.8.17,下载并安装: $ wg ...
- 为什么要使用wsgi协议
一个cs模型是由服务器和客户端组成,大多相互情况下也就是服务器端和浏览器之间的通信.通过浏览器请求服务器,然后服务器再响应浏览器. 那么如果浏览器想要请求一个python文件,例如http://127 ...
- JS高级---实例对象和构造函数之间的关系
实例对象和构造函数之间的关系: 1. 实例对象是通过构造函数来创建的---创建的过程叫实例化 2. 如何判断对象是不是这个数据类型? 1) 通过构造器的方式 实例对象.构造器==构造函数 ...
- Gitee 码云 pages 搭建vue项目记录
首先要在.gitignore文件去掉/dist,这个文件默认是不上传的,但是执行打包bulid的时候会生成dist文件,而线上访问的是打包之后的dist文件: vue.config.js文件,如下图箭 ...
- java 反射获取设置私有成员变量的值
for (Object arg:args) { //处理applicationCode Class<?> argClass = arg.getClass(); Field applicat ...
- [C++_QT] Error: Not a signal or slot declaration
问题: 在Qt工程中添加了一个新的窗口之后 一直报错 如下 单单从错误描述上看 是缺少信号或者槽 但是我确定没有缺少啊 然后第二个错误显示了一个mox_xxxx文件 然后我就去那个目录下去找那个文件 ...