1. public static void main(String[] args) throws Exception {
  2.  
  3. User user= (User) test(User.class);
  4. System.out.println(user.getMoney());
  5. invokeTest(user,"getMoneyT");
  6. }
  7.  
  8. /**通过反射获取实例
  9. * @param clazz类,如user.class
  10. * @return 类实例
  11. * @throws Exception
  12. */
  13. static Object test(Class clazz) throws Exception{
  14. //clazz.newInstance();//实例化一个类,前提是该类存在无参构造参数
  15. Constructor constructor=clazz.getConstructor(String.class);//得到构造器,String.class是即将实例化类clazz的构造参数的类型
  16. Object obj= constructor.newInstance("test");//传入一个参数进行实例化
  17. return obj;
  18. }
  19. /**调用指定方法
  20. * @param obj对象
  21. * @param methodName要调用的方法名
  22. * @throws Exception
  23. */
  24. static void invokeTest(Object obj,String methodName) throws Exception{
  25. Method[] ms= obj.getClass().getDeclaredMethods();//当前类的方法,包括私有
  26. //ms=obj.getClass().getMethods();//子类 父类的所有公共方法
  27. for(Method m:ms){
  28. System.out.println(m.getName());
  29. if (m.getName().equals(methodName)) {
  30. m.invoke(obj, null);//调用无参方法
  31. }
  32.  
  33. }
  34. Method methods=obj.getClass().getMethod(methodName, null);//根据方法名和参数直接调用方法,方法无参传null
  35. methods.invoke(obj, null);
  36. }
  37. /**通过反射获取字段
  38. * @param clazz
  39. * @throws Exception
  40. */
  41. static void filed(Class clazz) throws Exception{
  42. Field[] fs=clazz.getDeclaredFields();//当前类的字段,包括私有
  43. //fs=clazz.getFields();//所有公共字段
  44. for (Field field : fs) {
  45. System.out.println(field.getName());
  46. }
  47. }

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. 升级 .net core3.1

    下载sdk3.1版本 升级包 然后build之后看提示若有其他包版本太低则按照提示将其他包升级 build --> run 报错,修复bug(主要由于包更新之后有些方法或者属性被移除造成无法使用 ...

  2. Ansible - 配置文件

    概述 再水一发 ref Ansible Configuration Settings 1. 查看 概述 查看 配置文件 的默认位置 命令 > ansible --version 结果 confi ...

  3. 【12】(难&精)【DFS】矩阵中的路径

    题目 矩阵中的路径 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一 ...

  4. Scrapy - response.css()

    选择文本 response.css('span::text') 选择href response.css('a::attr(href)')

  5. python应用-使用python控制win2003服务器

    经调研和测试,服务端可通过ansible控制各linux服务器(容器),进行各类操作,且支持远程控制windows服务器,但windows操作系统中,需安装.net及powershell3.0及以上版 ...

  6. Qt: 释放窗口资源

    1. 对于使用指针,使用new创建的窗口,当然可以使用delete显示的释放其占用的资源: Widget *w = new Widget(); delete w;   2. 对于使用指针,使用new创 ...

  7. toSum

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  8. Jmeter中cookie自动存储

    1,新建一个测试计划,然后添加一个"HTTP Cookie 管理器"(用来存储cookie)2,新建一个线程组,添加一个Sampler-->“HTTP 请求”(用来登录用的) ...

  9. thinkphp 连接webservice接口

    嗯,我现在真的好像骂人啊,但是我又是个文明的人,所以我就写出来让自己冷静一下 ok,正事,thinkphp连别人写的webservice接口 刚开始他叫什么nc接口,就把我给骗了,这就是人家的名字,和 ...

  10. [C++_QT] 代码中不能有中文的解决方案 换行符问题

    #开始 今天开始入坑QT了 似乎是个高大上的东西,师傅一直建议我学这个 (如果用C++做界面的话) 配置好环境之后写了代码运行没问题 但是添加了中文字符之后就 die 了,这个问题的话 LInux上的 ...