载入类的几种方法

所有资源都通过ClassLoader载入到JVM里,那么在载入资源时当然可以使用ClassLoader,只是对于不同的资源还可以使用一些别的方式载入,例如对于类可以直接new,对于文件可以直接做IO等。

载入类的几种方法假设有类A和类B,A在方法amethod里需要实例化B,可能的方法有3种。对于载入类的情况,用户需要知道B类的完整名字(包括包名,例如"com.rain.B")  
1. 使用Class静态方法 Class.forName

Class cls = Class.forName("com.rain.B"); 
    B b = (B)cls.newInstance();

2. 使用ClassLoader  
    /* Step 1. Get ClassLoader */ 
    ClassLoader cl; // 如何获得ClassLoader参考本文最后

/* Step 2. Load the class */ 
    Class cls = cl.loadClass("com.rain.B"); // 使用第一步得到的ClassLoader来载入B 
     
    /* Step 3. new instance */ 
    B b = (B)cls.newInstance(); // 有B的类得到一个B的实例

3. 直接new  
    B b = new B();

ps:

获得ClassLoader的几种方法可以通过如下3种方法得到ClassLoader  
this.getClass.getClassLoader(); // 使用当前类的ClassLoader  
Thread.currentThread().getContextClassLoader(); // 使用当前线程的ClassLoader  
ClassLoader.getSystemClassLoader(); // 使用系统ClassLoader,即系统的入口点所使用的ClassLoader。

java 载入类的三种方法相关推荐

  1. Java 创建线程的三种方法比较

    在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述Java 创建线程的三种方法比较, 更多Java专业知识,广州疯狂jav ...

  2. Java 键盘输入的三种方法

    Java 键盘输入的三种方法 1.System.in和System.out方法:从控制台接收一个字符,然后将其打印出来 虽然此方式实现了从键盘获取输入的字符,但是System.out.read()只能 ...

  3. java生成验证码的三种方法

    java生成验证码的三种方法 第一种:导入jar包com.github.axet生成法 ①导包 <dependency><groupId>com.github.axet< ...

  4. 实现java字符串反转的三种方法

    实现java字符串反转的三种方法 1.问题描述:将字符串String="abcdefg"实现反转变成 "gfedcba":用java语言实现. 2.解决方法: ...

  5. java解析xml的三种方法

    java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax;import org.xml.sax.Attributes; import org.xml.sax.SAXEx ...

  6. 反射:获取Class类的三种方法

    反射:获取Class类的三种方法 // 1.Class类中的一个静态方法:forName(全限名:包名 + 类名) Class c = Class.forName(路径); System.out.pr ...

  7. java 获取时间戳 的三种方法

    java 获取时间戳 的三种方法,效率依次递减 方法一 : System.currentTimeMillis(); 方法二: new Date().getTime(); 方法三: Calendar.g ...

  8. Java创建线程的三种方法

    这里不会贴代码,只是将创建线程的三种方法做个笼统的介绍,再根据源码添加上自己的分析. 通过三种方法可以创建java线程: 1.继承Thread类. 2.实现Runnable接口. 3.实现Callab ...

  9. Java字符串分割的三种方法

     一.StringTokenizer方法 Java中substring方法可以分解字符串,返回的是原字符串的一个子字符串.如果要讲一个字符串分解为一个一个的单词或者标记,StringTokeniz ...

最新文章

  1. spring mvc项目中利用freemarker生成自定义标签
  2. 静态函数造成GC的原因
  3. Oracle入门(十四.15)之捕获Oracle服务器异常
  4. NetBeans 7.2引入了TestNG
  5. 初识斯蒂尔杰斯积分(Stieltjes integral)
  6. (网页)JS编程中,有时需要在一个方法返回两个个或两个以上的数据
  7. 配置UIAutomator中的ANT环境报不是内部命令与外部命令
  8. 腾讯云实验之Linux 基础入门
  9. 分布式SESSION一致性
  10. 【intellij idea 高级用法之:集成JIRA、UML类图插件、集成SSH、集成FTP、Database管理 】
  11. 远程多台前置机连接服务器上配置作业,得到作业运行历史记录
  12. 只需8招,搞定Pandas数据筛选与查询
  13. Matlab plot画图线型、符号及颜色
  14. 信息系统的风险评估过程与评估方法
  15. When Does Self-Supervision Help Graph Convolutional Networks?
  16. 从入门到放弃:微信小程序入门个人指南Day 4
  17. 鸿蒙系统没有录屏,这15+项高效又实用的功能更新,一定别错过!
  18. Windows下禁止软件wps热点自启动和后台运行
  19. DRM框架梳理-- dumb-buffer的分配和绑定到crtc
  20. ES 查询一,基于URL 的查询

热门文章

  1. CESI: Canonicalizing Open Knowledge Bases using Embeddings and Side Information
  2. native-JavaScript通信流程( 基于最新的 react native版本 )
  3. RabbitMQ 开发时指定消息消费者的方式
  4. 问题解决:系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的about_Execution_Policies
  5. 正则表达式( 形容词、转义符号、补充)
  6. [原]我和她同居的日子 一
  7. 做项目经理的自我总结(一)
  8. AndroidProjects个人项目归纳
  9. 要和文心一言来一把你画我猜吗?
  10. 修炼系列(八),你真的会写注释吗