1、我们知道,有了JAVA的反射给动态加载带来的许多方便之处,JAVA动态加载一般使用两种方式,一个是利用Class.forName(String className),Class.forname(String className,boolean initalize),这两个方法都是加载一个className名称的类,区别在于第二个方法如果第二个参数为true的话,不仅加载这个类,还会给它初始化,也就是返回一个已经初始化的类,在调用forName之前如果类已经被初始化过,则就算是false也会返回一个已经初始化的类,我们知道,一个类在虚拟机的生命周期中是分几个阶段的,从加载到连接到初始化,每一个过程都是在不同的时期执行的,执行的具体方式这里就不进行介绍了,请大家参考具体资料。另外一种就是自定义的类加载器,也可以让我们自动的在运行期间加载我们需要使用到的类型,它是classloader的子类。
2、实际使用哪种方式?
如果程序没有特殊的需要,一般使用Class.forName的形式加载,首先它是比较方便个人认为直接调用,虽然自定义的装载器编写也不是很复杂,但是这样的方式在很多场合更加直接。其次在有些场合我们可能一定得需要用到这种方式,因为它可以在装载的时候同时初始化,比如在JDBC的驱动程序中,装载它的时候我们需要是同时也已经初始化过了的类,不然的话别的类的静态初始化方法是无法调用它来实现功能的,而自定义的装载器只是装载,不会初始化开始的时候。
3、使用自定义装载器
我们知道每个类装载器装载类的时候,都可以自定义一套安全的装载方式,以满足安全的需要,class.forname从这个角度上讲不如自定义装载器。
4、class.forname方式有好多功能是做不到的,它只能加载classpath来的类,也就是说它加载类的位置有限,不能任意的加载,而自定义的类加载器就不一样,它可以加载任意位置的类,只要我们的实现去实现它,只要是class文件它都可以加载。
分享到:
相关推荐
在Java编程语言中,类与对象是核心概念,它们构成了面向对象编程的基础。这篇博文将深入探讨这两个概念,以及它们如何...通过阅读“浅谈Java的类与对象”这篇文档,你将能更深入地了解这些核心概念,提升你的编程技能。
"浅谈JAVA语言.pdf" 本文将从Java语言的起源开始,分析Java语言与传统语言的差异,并阐述Java语言为什么能够成为世界上最流行的编程语言的原因。同时,本文还将结合Java语言的特点与技术的发展,探讨Java语言在编译...
### 浅谈Java中的四个核心概念 随着信息技术的飞速发展与互联网的普及,Java作为一门面向对象的、跨平台的编程语言,在软件开发领域占据了举足轻重的地位。Java不仅仅是一门语言,它更是一个庞大的技术平台。为了更...
"浅谈Java的发展及前景" 经过对文件的分析,我们可以从多个角度来谈论Java的发展及前景。 首先,从Java的发展历史来看,Java是由Sun Microsystems公司于1995年5月推出的面向对象的程序设计语言。Java的出现标志着...
### 浅谈Java代理机制 #### 一、引言 在深入探讨Java代理机制之前,我们首先需要了解代理模式的基本概念及其应用场景。代理模式是一种结构型设计模式,它为其他对象提供了一种代理以控制对这个对象的访问。在Java...
### 浅谈Java语言评价胜出的8大技术优势 #### 1. 强大的API支持 Java提供了非常丰富的API支持,包括网络编程中的Socket API、数据库操作中的SQL API、图形用户界面的Swing和AWT API等。这些API不仅功能强大而且...
- 设计单例模式的连接池管理类,根据配置文件中的数据库信息动态创建和管理不同的连接池。 3. **连接的创建与回收** - 连接池需要有效地创建连接(如使用线程安全的初始化方法)并确保连接在不再使用时被正确地...
### 浅谈Java的输入输出流 #### 一、引言 Java的输入输出功能是其强大特性之一,为开发者提供了灵活多样的处理方式。尽管如此,初学者可能会觉得Java的IO操作相对复杂,因为涉及到多种不同的对象和类。本文旨在提供...
在Java中,虽然其类型系统相对固定,但可以通过一些技术来扩展其灵活性,例如使用泛型、反射和动态代理等。泛型提供了一种在编译时处理类型的方式,而反射允许在运行时检查和操作类的结构,动态代理则能实现接口的...
这个包在Java 2中进一步扩展,包含了6个类和18个接口,使得数据库操作更加灵活和高效。 JDBC Drivers是JDBC的核心组成部分,它们负责实际的数据库通信。目前,JDBC Drivers主要有四种类型: 1. JDBC-ODBC桥接驱动...
Java反射技术浅谈 Java反射技术是一种强大的技术,它允许Java程序访问、检测和修改它自己的状态或行为。通过反射,Java程序可以加载一个运行时才知道名称的类,获取其完整的内部信息,并创建其对象,或者对其属性...
浅谈 Java 的接口的作用和意义 Java 接口是一种抽象的概念,定义了一系列方法和特征的集合。它可以对应 Java 中特定的语法结构,与抽象类不同的是,抽象类可以实现某些方法,而接口不能。 Java 接口的存在意义在于...
Java NIO(New Input/Output)是一种用于处理I/O操作的非阻塞I/O模型,与传统的Java IO相比,它提供了更高的性能和更灵活的编程方式。...理解并掌握这些概念,对于优化Java应用的性能和可扩展性至关重要。
浅谈 Java 的接口的作用和意义 Java 的接口是一系列方法和特征的集合,它可以对应 Java 中特定的语法结构。接口和抽象类不同,抽象类可以实现某些方法,而接口则不能。接口的概念较为抽象,可以理解为是一系列方法...
现在是计算机网络时代,随着计算机的发展,Java己经成为一个主流,从它的开发到现在的成熟,经过几个阶段的探索,才完成现代的Java。它与别的编辑语言来比具有其自己的特点:平台无关性、安全性、面向对象、多线程、...
### 浅谈Java程序员的存储过程 #### 一、存储过程概述 存储过程是一种预先编写的、被存储在数据库服务器中的程序,可以在数据库端执行。它们可以被看作是数据库的功能扩展,允许开发者利用数据库的强大功能来处理...
总之,Java回调机制是提高代码灵活性和可扩展性的重要工具,通过将行为传递给其他对象,我们可以实现更复杂的控制流和异步操作,同时保持代码的清晰和模块化。在实际开发中,合理运用回调可以大大提高代码的可维护性...
总的来说,虽然基于Hashtable的数据库操作在早期Java Web应用中常见,但在现代开发中,考虑到性能、可扩展性和易用性,我们倾向于选择更适合的工具和框架。在实际项目中,应根据具体需求和技术栈,选择最适合的解决...
Java的23种设计模式是软件工程中的一种经典思想,它们是解决常见编程问题的成熟解决方案,被广泛应用于各种项目中。设计模式并不是特定的代码或库,而是对在特定情境下,如何组织代码和交互的一种描述。这些模式是...
在Java开发中,动态代理和CGLIB代理是两种常见的面向切面编程(AOP)实现方式,它们都用于在不修改原有代码的情况下,增强或扩展对象的功能。本篇文章将深入探讨JDK动态代理和CGLIB代理的区别,以及它们在实际应用中...