文档章节

Java面试基础篇——第十篇:反射的原理

liululee
 liululee
发布于 2018/07/24 14:14
字数 410
阅读 240
收藏 6

什么是Java的反射机制?指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法。对于任意一个对象,都能调用它的任意一个方法。这种动态获取信息,以及动态调用对象方法的功能叫Java语言的反射机制. 通过Java的反射机制,可以在运行期间调用对象的任何方法,先看一个简单的demo

/**
 * @author Lee
 * @// TODO 2018/7/24-13:07
 * @description 反射demo
 */
public class ReflectDemo {
    public static void main(String[] args) throws Exception {
        Class clazz = Class.forName("com.developlee.springmvclearn.reflect.Reflect");
        Object object = clazz.newInstance();
        Method method = clazz.getDeclaredMethod("say");
        method.invoke(object);
    }
}
//测试类
public class Reflect {
    public void say(){
        System.out.println("Hello");
    }
}

反射创建类实例的三种方式

   Reflect reflect = new Reflect(); //Reflect 的实例对象reflect
   //Reflect 也是一个实例对象,它是Class类的实例对象
   Class class1 = Reflect.class; //第一种形式:任何一个类低都隐含一个静态成员变量class
   Class class2 = reflect.getClass(); // 第二种形式: 已知该类的对象,通过getClass()方法获取
   Class class3 = Class.forName("com.developlee.springmvclearn.reflect.Reflect");//第三种形式
   System.out.println(class1 == class2);
   System.out.println(class1 == class3);

不管class1,class2,class3 都代表了Reflect类的类类型,一个类只可能是Class,即是类的一个实例对象

© 著作权归作者所有

liululee
粉丝 130
博文 80
码字总数 117498
作品 0
杭州
程序员
私信 提问
【Java学习路线】新手该如何一步步的学习 Java

新手该如何一步步的学习 Java? 如果真的想学Java,最好要循序渐进,有章有法的学习它! 今天小慕就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容。 首先,给大家分享一张以 企业...

Eddie_yang
2018/11/15
3.1K
0
【原创】Java并发编程系列10 | 线程状态

  20大进阶架构专题每日送达    Java并发编程脑图   本文为何适原创并发编程系列第 10 篇,前面几篇没看过的,可以在文末找到前几篇的跳转链接。前面几篇理论知识介绍了一大堆,实际编...

java进阶架构师
2019/12/18
0
0
【目录导航】JAVA零基础进阶之路

【JAVA零基础入门系列】(已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day6 Java字符串 Day7 Java输入与输出...

MFrank
2018/06/21
0
0
gif | 99%的程序员都笑了!程序员的真实工作状态

  今天周五,只想摸鱼   大家偷个懒,笑一笑   维护老的代码      搞定来一个BUG      Google想干嘛?      需求不明确      前端VS后端      客户描述      ...

java进阶架构师
2019/12/06
0
0
GitHub 上可供新手阅读和玩耍的 Java 项目有哪些?

1.JavaGuide star:62.4k Java学习+面试指南。涵盖了Java语言、操作系统、数据结果与算法、数据库、系统设计等大部分Java程序员所需要掌握的核心知识。 2.算法-Java star:19.8k 适合用Java编...

九章算法
2019/11/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql中int(11)的列大小是多少?

mysql中int(11)的列大小是多少? 以及可以在此列中存储的最大值? #1楼 mysql中int(11)的列大小是多少? (11) int数据类型的此属性与列的大小无关。 它只是整数数据类型的显示宽度。 从11....

技术盛宴
26分钟前
19
0
聊聊artemis消息的推拉模式

序 本文主要研究一下artemis消息的推拉模式 拉模式 receive activemq-artemis-2.11.0/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.......

go4it
36分钟前
39
0
vue 全局前置守卫引起死循环的原因与解决方法

我们经常会用到全局前置守卫,如判断用户有没有登陆过,如果登陆过就直接跳到目的页面,如果没有登陆过,就跳转到登陆页。 先看官网对全局前置守卫的介绍 使用 router.beforeEach 注册一个全...

tianyawhl
47分钟前
31
0
如何按索引从std :: vector <>擦除元素?

我有一个std :: vector <int>,我想删除第n个元素。 我怎么做? std::vector<int> vec;vec.push_back(6);vec.push_back(-17);vec.push_back(12);vec.erase(???); #1楼 erase方法将以两......

javail
今天
43
0
使用生成器模拟时间分片

对于cpu密集型任务, 时间分片可以有效减少页面卡顿, 不过对于纯计算型任务还是推荐使用worker在后台做计算 效果图, 计算密集型任务被分到每次只执行16ms, 每次执行完毕留给浏览器时间去响应事...

阿豪boy
今天
63
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部