一丶调用运行时类中指定的属性

       Class clazz = Person.class;
//1.获取指定的属性
Field name = clazz.getField("name");//获取运行时类及其父类中声明public的指定名为name的属性
//2.创建运行时类的对象
Person person = (Person) clazz.newInstance();
//3.将运行时类的指定属性赋值
name.set(person, "Jerry");
Field age = clazz.getDeclaredField("age");//可以获取运行时类中指定名为age的属性
age.setAccessible(true);//由于属性权限修饰符的限制,为了保证可以给属性赋值,需要在设置属性前使得有权限操作该属性
age.set(person, 11);

二丶调用运行时类中指定的方法

       Class clazz = Person.class;
//1.获取运行时类中声明public的指定的方法
Method method = clazz.getMethod("display", String.class);//有一个String类型的形参,第二个参数是变长参数,如果没有形参就不写
Person person = (Person) clazz.newInstance();
Object returnVal = method.invoke(person, "hello");//返回值就对应到具体调用方法的返回值
//2.获取运行时类中指定的方法
Method m = clazz.getDeclaredMethod("show");
m.setAccessible(true);//和属性一个意思
m.invoke(person);
//3.获得静态的方法
Method m3 = clazz.getMethod("info");
m3.invoke(Person.class);//对于静态方法的掉用

三丶调用指定的构造器

       Class clazz = Person.class;
//获取运行时类中指定的构造器
Constructor c = clazz.getDeclaredConstructor(String.class,int.class);
c.setAccessible(true);
Person p = (Person)c.newInstance("Tom",20);//通过指定构造器创建对象

java反射专题三的更多相关文章

  1. Java反射学习三

    反射与数组 java.lang.Array类提供了动态创建和访问数组元素的各种静态方法. 例程ArrayTester1类的main()方法创建了一个长度为10的字符串数组,接着把索引位置为5的元素设为 ...

  2. [Java反射基础三]方法反射的基本操作

    本文接上文“获取类的信息”,利用反射(invoke)来获取一个类中的方法来执行. 1.定义一个类,包含三个名称相同,参数不同的方法 class A{ public void print(){ Syst ...

  3. Java反射《三》获取属性

    package com.study.reflect; import java.lang.reflect.Field; /** * 反射,获取属性 * @ClassName: FieldDemo * @ ...

  4. java反射专题一

    一丶Class的理解 /* * Class类是反射的源头 * 创建一个类,通过编译(javac.exe),生成对应的.class文件,之后使用java.exe加载(JVM的类加载器完成的)此.clas ...

  5. Java反射的三种实现方式

    Foo foo = new Foo(); 第一种:通过Object类的getClass方法 Class cla = foo.getClass(); 第二种:通过对象实例方法获取对象 Class cla ...

  6. java反射专题二

    一丶Class中常用方法详解 1)getFields() 只能获取到运行时类中及其父类中声明为public的属性 2)getDeclaredFields() 获取运行时类本身声明的所有属性 3)get ...

  7. Java反射【三、方法的反射】

    获取一个类下的所有方法 可以获取类类型后,获取到所有方法及相关信息 Method[] ms = c.getMethods(); 获取方法列表(public) Method[] ms = c.getDe ...

  8. 大型Java进阶专题(三) 软件架构设计原则(下)

    前言 ​ 今天开始我们专题的第二课了,本章节继续分享软件架构设计原则的下篇,将介绍:接口隔离原则.迪米特原则.里氏替换原则和合成复用原则.本章节参考资料书籍<Spring 5核心原理>中的 ...

  9. Java反射【一、概述】

    .net也使用过反射,不过用的比较浅显,用来记日志等.. Java基础课程学习已经过了一段时间了,接下来继续学习 本次学习包含以下内容 Java反射[一.概述] Java反射[二.Class类的使用] ...

随机推荐

  1. VC 写注册表

    BOOL Running() { HKEY hKey; LPCTSTR strRegPath = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion ...

  2. Codeforces Round #285 (Div. 2) A, B , C 水, map ,拓扑

    A. Contest time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  3. Java中finally关键字的使用(转)

    与其他语言的模型相比,finally 关键字是对 Java 异常处理模型的最佳补充.finally 结构使代码总会执行,而不管有无异常发生.使用 finally 可以维护对象的内部状态,并可以清理非内 ...

  4. review30

    数据流 DateInputStream和DataOutputStream类创建的对象称为数据输入流和数据输出流.这两个流是很有用的流,它们允许程序按着机器无关的风格读取Java原始数据.也就是说,当读 ...

  5. iTextSharp 生成PDF

    下载地址:http://sourceforge.net/projects/itextsharp/ iText is a PDF library that allows you to CREATE, A ...

  6. 简单的shell语句

    1,重启tomcat 脚本: pid=`ps -ef|grep tomcat |grep -v grep |awk '{print $2}'` ##取tomcat的进程号,awk处理字符串 ,取一行的 ...

  7. JVM_总结_01_JDK的安装

    一.前言 本文主要简要介绍下JDK的安装 二.下载 1.JDK下载地址 前往官方网站下载JDK jdk8官网下载 2.JDK下载 如下图 下载完之后得到安装软件,如下图 三.安装 双击运行安装软件,即 ...

  8. uva11489 - Integer Game(考思维,找规律)

    从S开始时只能是两种情况: 1.现在总和已经是3的倍数了,那么因为每人每次只能拿走一个数,要保持拿走之后依然是3的倍数,那么就只能拿3,6,9这类数,用num统计一下,看看num奇偶性就知道谁最后拿了 ...

  9. POJ 3071 Football (概率DP)

    概率dp的典型题.用dp[j][i]表示第j个队第i场赢的概率.那么这场要赢就必须前一场赢了而且这一场战胜了可能的对手.这些都好想,关键是怎么找出当前要算的队伍的所有可能的竞争对手?这个用异或来算,从 ...

  10. BZOJ - 1036 树的统计Count (树链剖分+线段树)

    题目链接 #include<bits/stdc++.h> using namespace std; typedef long long ll; ,inf=0x3f3f3f3f; ],mx[ ...