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.新创建的app一定要先去settings.py注册 简写:'app01' 完整:'app01.apps.App01Config' 2.启动Django ...
- 创建Vue项目及其内容分析
利用 vue 脚手架开发企业级应用 # 全局安装 vue-cli npm install --global vue-cli # 创建一个基于 webpack 模板的新项目 ...
- 【音乐欣赏】《PANTA RHEI》 - MYTH & ROID
曲名:PANTA RHEI 作者:MYTH & ROID [ti:PANTA RHEI (<异世界超能魔术师>TV动画片头曲)] [ar:MYTH & ROID] [al: ...
- 每天进步一点点------CORDIC (一)
三角函数计算,Cordic 算法入门 三角函数的计算是个复杂的主题,有计算机之前,人们通常通过查找三角函数表来计算任意角度的三角函数的值.这种表格在人们刚刚产生三角函数的概念的时候就已经有了,它们通常 ...
- Linux按文件名搜索命令
find 搜索目录 -name 目标名字 find / -name file名 /代表是全盘搜索,也可以指定目录搜索 find 搜索文件的命令格式: find [搜索范围] [匹配条件] 选项: -n ...
- Spring整合JDBC和Druid连接池
我的博客名为黑客之谜,喜欢我的,或者喜欢未来的大神,点一波关注吧!顺便说一下,双十二快到了,祝大家双十二快乐,尽情的买买买~ 如果转载我的文章请标明出处和著名,谢谢配合. 我的博客地址为: https ...
- C语言程序设计(一)
目录: 1. 向屏幕输出一行文字 2. 输出两个函数的和 3. 函数一 4. 函数二 5. 求两个数的最大值 6. printf和scanf函数的返回值 7. 输入一个成绩,输出所对应的 ...
- 深入理解Java虚拟机(1)
Java内存区域 对于Java程序员来说,在虚拟机的自动内存管理机制下,不再需要为每一个new操作去写配对的delete和free代码,不容易出现内存泄露和内存溢出问题,可以直接交给虚拟机进行管理. ...
- Linux上FTP部署:基于mariadb管理虚拟用户
FTP原理 FTP 采用 Internet 标准文件传输协议 FTP 的用户界面, 向用户提供了一组用来管理计算机之间文件传输的应用程序.图1 FTP 的基本模型 FTP 是基于客户---服务器(C/ ...
- 【笔记7-部署发布】从0开始 独立完成企业级Java电商网站开发(服务端)
阿里云服务 购买 连接 购买域名 域名备案 域名解析 源配置步骤 资源地址 http://learning.happymmall.com/ 配置阿里云的yum源 1.备份 mv /etc/yum.re ...