重修Java内功——书到用时方恨少

Java内功之ClassLoader

众所周知,“书到用时方恨少,事非经过不知难”,在学生时代,被备考和考试所“折磨”过的同学尤其能体会其中的艰难。到了工作的当中尤其能够体会到这种艰难的时刻莫过与准备面试。所以为了减少面对时的痛苦,提前做好准备是很有必要的。胸有成竹,才能够行云流水。不管是正在准备着面试,还是在准备的路上,提前修炼好内功是很有必要地!希望能够这段话能够与读者以及未来的自己共勉!

Java的精髓莫过于其最大的优势——高可维护性。在Java工程师的面试过程中,JVM的基础知识是不可能迈过去的“槛”!这也是Java的内功之一。下面来聊一聊JVM的一个重点——ClassLoader。

偶然看到一道面试题:


题目:下面给出的Java中ClassLoader中的描述,哪些描述是正确的?()

A. ClassLoader没有层次关系

B. 所有类中ClassLoader都是AppClassLoader

C. 通过Class.ForName(String className),能够动态加载一个类

D. 不同的ClassLoader加载同一个Class文件,所得的类是相同的


可能是你已经有了正确的答案:C,没错。但是只是这个答案并不能够将你的Java内功完美地展现出来,得要抓取每个选项中的关键词进行讨论,并对其概念进行正确地论述,才能正确的打开方式!

下面取出其中的关键字:1. 层次关系;2. ClassLoader的存在形式;3. Class.ForName()方法;4. ClassLoader加载的过程;5. Class文件。

层次关系

ClassLoader的存在形式

Class.ForName()方法

ClassLoader加载的过程

Class文件

Class.ForName(),是根据一个类的名字,动态地实例化一个类。这种做法的常见场景:

1. 编写第三方的库;

2. 在实现OCP(开闭原则)的时候,对变化进行隔离,即进行防御性编程;

3. 常见于“Spring家族”中,实现依赖倒置(控制反转的思想)。

使用Class.ForName()可以不需要使用new关键字,而获取一个类的对象。这种做法取消了对类的显示依赖,既可以通过获取到的类的对象使用其方法。

下一篇文章,仔细讨论以上的5个关键词。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值