java 载入类的三种方法
载入类的几种方法
所有资源都通过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 载入类的三种方法相关推荐
- Java 创建线程的三种方法比较
在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述Java 创建线程的三种方法比较, 更多Java专业知识,广州疯狂jav ...
- Java 键盘输入的三种方法
Java 键盘输入的三种方法 1.System.in和System.out方法:从控制台接收一个字符,然后将其打印出来 虽然此方式实现了从键盘获取输入的字符,但是System.out.read()只能 ...
- java生成验证码的三种方法
java生成验证码的三种方法 第一种:导入jar包com.github.axet生成法 ①导包 <dependency><groupId>com.github.axet< ...
- 实现java字符串反转的三种方法
实现java字符串反转的三种方法 1.问题描述:将字符串String="abcdefg"实现反转变成 "gfedcba":用java语言实现. 2.解决方法: ...
- java解析xml的三种方法
java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax;import org.xml.sax.Attributes; import org.xml.sax.SAXEx ...
- 反射:获取Class类的三种方法
反射:获取Class类的三种方法 // 1.Class类中的一个静态方法:forName(全限名:包名 + 类名) Class c = Class.forName(路径); System.out.pr ...
- java 获取时间戳 的三种方法
java 获取时间戳 的三种方法,效率依次递减 方法一 : System.currentTimeMillis(); 方法二: new Date().getTime(); 方法三: Calendar.g ...
- Java创建线程的三种方法
这里不会贴代码,只是将创建线程的三种方法做个笼统的介绍,再根据源码添加上自己的分析. 通过三种方法可以创建java线程: 1.继承Thread类. 2.实现Runnable接口. 3.实现Callab ...
- Java字符串分割的三种方法
一.StringTokenizer方法 Java中substring方法可以分解字符串,返回的是原字符串的一个子字符串.如果要讲一个字符串分解为一个一个的单词或者标记,StringTokeniz ...
最新文章
- spring mvc项目中利用freemarker生成自定义标签
- 静态函数造成GC的原因
- Oracle入门(十四.15)之捕获Oracle服务器异常
- NetBeans 7.2引入了TestNG
- 初识斯蒂尔杰斯积分(Stieltjes integral)
- (网页)JS编程中,有时需要在一个方法返回两个个或两个以上的数据
- 配置UIAutomator中的ANT环境报不是内部命令与外部命令
- 腾讯云实验之Linux 基础入门
- 分布式SESSION一致性
- 【intellij idea 高级用法之:集成JIRA、UML类图插件、集成SSH、集成FTP、Database管理 】
- 远程多台前置机连接服务器上配置作业,得到作业运行历史记录
- 只需8招,搞定Pandas数据筛选与查询
- Matlab plot画图线型、符号及颜色
- 信息系统的风险评估过程与评估方法
- When Does Self-Supervision Help Graph Convolutional Networks?
- 从入门到放弃:微信小程序入门个人指南Day 4
- 鸿蒙系统没有录屏,这15+项高效又实用的功能更新,一定别错过!
- Windows下禁止软件wps热点自启动和后台运行
- DRM框架梳理-- dumb-buffer的分配和绑定到crtc
- ES 查询一,基于URL 的查询
热门文章
- CESI: Canonicalizing Open Knowledge Bases using Embeddings and Side Information
- native-JavaScript通信流程( 基于最新的 react native版本 )
- RabbitMQ 开发时指定消息消费者的方式
- 问题解决:系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的about_Execution_Policies
- 正则表达式( 形容词、转义符号、补充)
- [原]我和她同居的日子 一
- 做项目经理的自我总结(一)
- AndroidProjects个人项目归纳
- 要和文心一言来一把你画我猜吗?
- 修炼系列(八),你真的会写注释吗