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通过反射实现实例化的更多相关文章

  1. JAVA的反射理解

    1----------------------------反射的概念----------------------------------------------- JAVA的反射机制是在运行状态中,对 ...

  2. Java 类反射机制分析

    Java 类反射机制分析 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某 ...

  3. Java:反射

    初识Java反射机制: 从上面的描述可以看出Java的反射机制使得Java语言可以在运行时去认识在编译时并不了解的类/对象的信息,并且能够调用相应的方法或修改属性的值.Java反射机制的核心就是允许在 ...

  4. Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别

    一.Java的反射机制   每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图:   其中

  5. java笔记--反射进阶之总结与详解

    一.反射进阶之动态设置类的私有域 "封装"是Java的三大特性之一,为了能更好保证其封装性,我们往往需要将域设置成私有的, 然后通过提供相对应的set和get方法来操作这个域.但是 ...

  6. java笔记--反射机制之基础总结与详解

    一.反射之实例化Class类的5种方式: java的数据类型可以分为两类,即引用类型和原始类型(即基本数据类型). 对于每种类型的对象,java虚拟机会实例化不可变的java.lang.Class对象 ...

  7. java中反射学习整理

    转载请注明:http://blog.csdn.net/j903829182/article/details/38405735 反射主要是指程序能够訪问.检測和改动它本身的状态或行为的一种能力. jav ...

  8. Java使用反射机制优化工厂方法

    我先举个例子,有一个接口People,这个接口有一个方法: package com.wjy.reflect; public interface People { public abstract voi ...

  9. java笔录---反射机制(1)

    引言   为了方便记忆java的反射机制,在这里仔细的总结了一下.主要是怕以后忘记了,这样也方便回忆.因为最近利用空余时间深入的了解spring和Mybatis框架,   像spring中核心模块IO ...

随机推荐

  1. 转载:Linux 时钟基础学习

    1.HZ Linux核心每隔固定周期会发出timer interrupt (IRQ 0),HZ是用来定义每一秒有几次timer interrupts.举例来说,HZ为1000,代表每秒有1000次ti ...

  2. 使用python同时替换json多个指定key的value

    1.如何同时替换json多个指定key的value import json from jsonpath_ng import parse def join_paths(regx_path,new_val ...

  3. Delphi XE FireDac 连接池

    在开发Datasnap三层中,使用FireDac 连接  MSSQL数据库. 实现过程如下: 1.在ServerMethods 单元中放入 FDManager.FDPhysMSSQLDriverLin ...

  4. Django objects.all()、objects.get()与objects.filter()之间的区别介绍

    前言 本文主要介绍的是关于Django objects.all().objects.get()与objects.filter()直接区别的相关内容,文中介绍的非常详细,需要的朋友们下面来一起看看详细的 ...

  5. Redis-消息

    Redis 发布订阅(实际开发不使用) Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图 ...

  6. Java 线程高级

    1.volatile关键字:当多个线程操作共享数据时,可以保证内存中的数据可见,相较于syncronized是一种较为轻量级的同步策略, 注意:1.volatile不具有“互斥性” 2.volatil ...

  7. STM32 MDK C 常见易错点

    1.MDK编译器单字节的负数-1,-2,-3... ... 处理:存储,类型转换,位对齐. char 定义的变量在运算过程尤其类型转换,逻辑比大少会被当做 unsigned char 处理,这里很容易 ...

  8. ztree-拖拽(排序树)

    <!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - beforeDrag / onDrag / bef ...

  9. Eclipse无法查看第三方jar包文件源代码解决方法

    来源于:https://www.cnblogs.com/1995hxt/p/5252098.html 1.打开第三方依赖包,源文件的快捷键:ctrl + mouseClick 2.由于我们下载的第三方 ...

  10. vue axios路由跳转取消所有请求 和 防止重复请求

    直接上干货 在发送第二次请求的时候如果第一次请求还未返回,则取消第一次请求,以保证后发送的请求返回的数据不会被先发送的请求覆盖. 或者是跳转路由的时候取消还未返回的请求 第一步: axios 怎么取消 ...