public class Demo {public static void main(String [] args) throws Exception {try {//通过全限定名找到classClass t =  Class.forName("com.honjane.demo.javademo.ReflectModel");//通过class反射出构造器  构造器参数new Class[]{String.class}Constructor constructor = t.getConstructor(new Class[]{String.class});//构造出ReflectModelReflectModel model = (ReflectModel)constructor.newInstance("nihao");//获得所有方法Method[] methods = t.getMethods();System.out.println(t);for (int i = 0;i<methods.length;i++) {System.out.println(methods[i]);}//获得方法名getAge的方法 无参Method method = t.getMethod("getAge");//method.invoke(model);//获得方法名setAge的方法 参数int型Method method1 = t.getMethod("setAge",int.class);method1.invoke(model,111);//获得方法名setName的方法 参数String型Method method2 = t.getMethod("setName", String.class);method2.invoke(model,"张三");//获得方法名setType的私有方法 参数int型 需要使用getDeclaredMethod,且需要修改权限AccessibleMethod method3 = t.getDeclaredMethod("setType",int.class);method3.setAccessible(true);//invoke(obj,prams) obj为改对象,prams为方法参数method3.invoke(model,12);} catch (Exception ex) {// handle exception case}}}
public class ReflectModel {public String name;private int age;public ReflectModel(String name) {this.name = name;System.out.println("ReflectModel:"+name);}public int getAge() {System.out.println("-------------------");return age;}public void setAge(int age) {this.age = age;System.out.println("------------------age:"+age);}public void setName(String name) {this.name = name;System.out.println("------------------name:"+name);}private void setType(int type) {System.out.println("------------------type:"+type);}
}

运行结果:

ReflectModel:nihao
class com.honjane.demo.javademo.ReflectModel
public void com.honjane.demo.javademo.ReflectModel.setName(java.lang.String)
public int com.honjane.demo.javademo.ReflectModel.getAge()
public void com.honjane.demo.javademo.ReflectModel.setAge(int)
public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
public final void java.lang.Object.wait() throws java.lang.InterruptedException
public boolean java.lang.Object.equals(java.lang.Object)
public java.lang.String java.lang.Object.toString()
public native int java.lang.Object.hashCode()
public final native java.lang.Class java.lang.Object.getClass()
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()
-------------------
------------------age:111
------------------name:张三
------------------type:12

反射:类,构造器,方法使用相关推荐

  1. Java 编程问题:七、Java 反射类、接口、构造器、方法和字段

    原文:Java Coding Problems 协议:CC BY-NC-SA 4.0 贡献者:飞龙 本文来自[ApacheCN Java 译文集],自豪地采用谷歌翻译. 本章包括涉及 Java 反射 ...

  2. 利用反射动态实例化类执行方法并传值

    /// <summary>         /// 利用反射动态实例化类执行方法并传值         /// </summary>         /// <param ...

  3. java反射 数组类,乐字节Java反射之三:方法、数组、类加载器和类的生命周期

    继续讲述Java反射之三:方法.数组.类加载器 一.方法 获取所有方法(包括父类或接口),使用Method即可. public static void test() throwsException { ...

  4. 调用反射类的指定方法

    package org.entity;import java.lang.reflect.Method;/*** 本案例演示如何通过反射将字符串转换为类* */ public class Test2_2 ...

  5. php 反射类 解析注释,php反射获取类和方法中的注释

    通过php中的反射机制,获取该类的文档注释,再通过获取其所有的方法,获取方法的注释 所用到的主要类及其方法 ReflectionClass ReflectionClass::getDocComment ...

  6. Java反射机制涉及的类常见方法使用总结

    1 import java.lang.reflect.Constructor; 2 import java.lang.reflect.*; 3 4 /*Class:代表一个字节码文件的对象,每当有类被 ...

  7. php 反射 调用私有方法,PHP通过反射方法调用执行类中的私有方法

    PHP 5 具有完整的反射 API,添加了对类.接口.函数.方法和扩展进行反向工程的能力. 下面我们演示一下如何通过反射,来调用执行一个类中的私有方法: //MyClass这个类中包含了一个名为myF ...

  8. 使用反射获得jar包中的类、方法、参数、返回值类型,然后动态加载jar包运行方法

    其实我的需求是在系统中 测试用户导入的jar包,所有网上找了很多解决方案,踩过很多坑,再加上以前搞c++的,对java不是很熟, 这里特意记录下,算是基本满足需求了 使用反射获得jar包中的类.方法. ...

  9. 反射类的构造函数和方法

    开始学习Javaweb,看到了反射,现在还没有用上,先把基础的写上来吧 package com.april.write; public class Grade { private int num; p ...

  10. java 获取类的注解_Java 自定义注解通过反射获取类、方法、属性上的注解

    反射 JAVA中的反射是运行中的程序检查自己和软件运行环境的能力,它可以根据它发现的进行改变.通俗的讲就是反射可以在运行时根据指定的类名获得类的信息. 注解的定义 注解通过 @interface 关键 ...

最新文章

  1. DDR和DDR2的区别
  2. matlab智能小车避障,Arduino智能小车系列教程4——超声波避障
  3. 全国计算机一级考试理论,全国计算机等级考试一级理论汇总(最新版).pptx
  4. 使用Spring AOP中MethodInterceptor记录日志
  5. JSTL的错误“attribute test does not accept any expressions”解决方法
  6. oracle高资源消耗sql,Oracle中定位重要(消耗资源多)的SQL
  7. 全球五大顶级域名一周统计:7月第三周新增超9万个
  8. SpringBoot @Resource注入的坑
  9. python数据按照分组进行频率分布_python 等频率切分数据
  10. linux 核显驱动程序,在Ubuntu系统上安装英特尔核显驱动安装器的方法
  11. 视频采集卡是什么?采集卡的妙用!
  12. 为什么现在很多人不看好商汤科技?
  13. Innodb中的事务隔离级别和锁的关系
  14. 新赛季的中超和国安,荆棘中前行
  15. video.js视频高度自适应解决方法
  16. Ubuntu-离线安装基本依赖(gcc、make、dkms等)
  17. 《Pro Oracle SQL》Chapter 2--2.4 Identical Statements
  18. 银河麒麟V10 SP2 server 搭建 ntp服务端
  19. Linux-常用的系统监控
  20. [Qt] TCP客户端与服务器断开连接自动重联机制

热门文章

  1. 【ccpc网络赛】YJJ's Salesman【1010】【树状数组+离散化+dp】
  2. Insomni'hack teaser 2019 - Misc - echoechoechoecho
  3. 【洛谷】 3264 [JLOI2015] 管道连接
  4. Python之旅Day14 JQuery部分
  5. ThinkPHP框架的增删改
  6. hdu1527取石子游戏---(威佐夫博弈)
  7. js中获取当前项目名等
  8. MPI集群安装、MPI安装
  9. 【Spring-AOP】底层类ProxyConfig,ProxyProcessorSupport分析
  10. java面向接口编程详解