整理的反射相关的文章:

(1)、通俗理解反射(知乎):学习java应该如何理解反射?

(2)、关于反射比较深入的博文地址:深入解析Java反射(1) - 基础

贴出我反射调用代码:(craw,dept 就是两个属性包含Id的类)

        CrawlingTagsThumbnail craw = new CrawlingTagsThumbnail();
craw.setId(1L);
Dept dept=new Dept();
dept.setId(222);
     
     //调用下面的invoke方法  
invoke(CrawlingTagsThumbnail.class,craw);
invoke(Dept.class,dept);
private void invoke(Class<?> clazz,Object o) throws Exception{

    ////创建clazz的实例
//Object target = clazz.newInstance();
////这里可以把传入参数赋值到新的实例中(如果有需要)
// BeanUtils.copyProperties(o,target); //获取clazz类的getId方法
Method method = clazz.getMethod("getId");
//调用method对应的方法 => add(1,4)
Object result = method.invoke(o);
System.out.println(result);
}

反射调用相关扩展方法

获取某个Class对象的方法集合,主要有以下几个方法:

  • getDeclaredMethods 方法返回类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
    public Method[] getDeclaredMethods() throws SecurityException
  • getMethods 方法返回某个类的所有公用(public)方法,包括其继承类的公用方法。
    public Method[] getMethods() throws SecurityException
  • getMethod 方法返回一个特定的方法,其中第一个参数为方法名称,后面的参数为方法的参数对应Class的对象。
·    public Method getMethod(String name, Class<?>... parameterTypes)
  
   m.setAccessible(true);//解除私有限定
 
    Class<?> c = CrawlingTagsThumbnail.class;
//创建对象
Object object = c.newInstance();
Method[] methods = c.getMethods();
Method[] declaredMethods = c.getDeclaredMethods();
//获取methodClass类的特定方法 比如要调用set方法, ("setPicThumbnailId",Long.class);
Method method = c.getMethod("getPicThumbnailId");
//getMethods()方法获取的所有方法
System.out.println("getMethods获取的方法:");
for(Method m:methods)
System.out.println(m);
//getDeclaredMethods()方法获取的所有方法
System.out.println("getDeclaredMethods获取的方法:");
for(Method m:declaredMethods)
System.out.println(m);     //1.获取Class对象
    Class stuClass = Class.forName("fanshe.method.Student");
    //2.获取所有公有方法
    System.out.println("***************获取所有的”公有“方法*******************");
    stuClass.getMethods();
    Method[] methodArray = stuClass.getMethods();
    for(Method m : methodArray){
     System.out.println(m);
    }
    System.out.println("***************获取所有的方法,包括私有的*******************");
    methodArray = stuClass.getDeclaredMethods();
    for(Method m : methodArray){
     System.out.println(m);
    }
    System.out.println("***************获取公有的show1()方法*******************");
    Method m = stuClass.getMethod("show1", String.class);
    System.out.println(m);
    //实例化一个Student对象
    Object obj = stuClass.getConstructor().newInstance();
    m.invoke(obj, "刘德华");
  
    System.out.println("***************获取私有的show4()方法******************");
    m = stuClass.getDeclaredMethod("show4", int.class);
    System.out.println(m);
    m.setAccessible(true);//解除私有限定
    Object result = m.invoke(obj, 20);//需要两个参数,一个是要调用的对象(获取有反射),一个是实参
    System.out.println("返回值:" + result)

java反射知识相关的文章的更多相关文章

  1. Java 基础知识相关好文章

    1. 使用简单易懂的例子,分析了equals 和 hashCode 两个方法的异同,尤其中自定义类中对他们的重写,对Set等容器类的在插入时的判断是否相等的影响. http://blog.csdn.n ...

  2. 云笔记项目-Java反射知识学习

    在云笔记项目中,补充了部分反射的知识,反射这一部分基础知识非常重要,前面学习的框架Spring和MyBatis读取xml配置文件创建对象,以及JDBC加载驱动等都用了反射,但只知道有这个东西,具体不知 ...

  3. java反射知识

    java反射机制是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称 ...

  4. 学习Spring必学的Java基础知识(1)----反射(转)

    引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...

  5. 学习Spring必学的Java基础知识(1)----反射

    引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...

  6. Spring IOC知识java反射

    [1] Java反射知识-->Spring IoC :http://www.iteye.com/topic/1123081 [2] Java动态代理-->Spring AOP :http: ...

  7. Java 基础之详解 Java 反射机制

    一.什么是 Java 的反射机制?   反射(Reflection)是Java的高级特性之一,是框架实现的基础,定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: ...

  8. 学习Spring必学的Java基础知识

    [1] Java反射知识-->Spring IoC :http://www.iteye.com/topic/1123081 [2] Java动态代理-->Spring AOP :http: ...

  9. 主题:学习Spring必学的Java基础知识(9)----HTTP报文

    转: 引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓“登高必自卑,涉远必自迩”.以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系列分别介绍这些 ...

随机推荐

  1. Python之路【第一篇】Linux常见命令语句

    查看当前目录:        pwd 查看文件具体大小: ls -l 返回上一级: cd.. 返回根目录:     cd / 创建一个隐藏文件:    vim .test 显示隐藏文件:      l ...

  2. 背水一战 Windows 10 (116) - 后台任务: 前台程序激活后台任务

    [源码下载] 背水一战 Windows 10 (116) - 后台任务: 前台程序激活后台任务 作者:webabcd 介绍背水一战 Windows 10 之 后台任务 前台程序激活后台任务 示例演示后 ...

  3. 腾迅云获取免费SSL证书并布置

    上次申请了SSL证书一直没时间布置,今天重新再来操作一次 首先需要申请SSL证书,腾迅云买的域名有免费一年的SSL证书申请,网址:https://console.cloud.tencent.com/s ...

  4. Python学习笔记【第七篇】:文件及文件夹操作

     介绍 我们用pytthon.C#.Java等这些编程语言,想要把文件(文字.视频....)永久保存下来就必须将文件写入到硬盘中,这就需要我们应用程序去操作硬件,我们这些编程语言是无法直接操作硬件的. ...

  5. alibaba的FastJson找不到JSON对象问题

    在现在出现使用JSON.toJsonString()方法时,可能没有JSON这个对象. 这种问题可能是下载的jar版本比较高.在低版本的jar使用的是JSON对象. 我使用的是1.2.47版本的jar ...

  6. git使用方法----如何利用git管理代码?如何使用git将代码传到github中去

    ##  在文件夹中打开 git here; 1.git init ===初始化一个仓库(这个仓库会存放,git对我们代码进行备份的文件)2.配置个人信息 -- --在git中设置当前使用的用户是==( ...

  7. 带你一文了解Python中的运算符

    运算符 目标 算数运算符 比较(关系)运算符 逻辑运算符 赋值运算符 运算符的优先级 数学符号表链接:https://zh.wikipedia.org/wiki/数学符号表 01. 算数运算符 是完成 ...

  8. 性能调优之Mapping

    Mapping层级的调优可能会花费时间,但是性能调优的效果确实非常显著的 优化Target,Source之后,可以调优Mapping 通常的方法是尽可能减少组件及组件的字段间不必要的连线 即尽可能用最 ...

  9. app开发中,前后端使用AES进行数据加密传输

    问题:当数据调用没有使用https加密时,app被抓包,接口暴露,此时可能导致被刷等安全问题 解决:1. 使用https传输 2. 在进行数据传输时进行手动加密(app端和后端定义统一的加密方式),这 ...

  10. 原生js的简单倒计时

    <!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>倒计 ...