forname()动态加载的机制

java的代码通过编译生成类,也就是.Class文件


1.java里面任何class都要装载在虚拟机上才能运行,而静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了,而且以后不会再走这段静态代码了。


package cc.openhome;


public class ConsolePlayer implements Player {


	@Override
	public void play(String video) {
		// TODO Auto-generated method stub
			System.out.println("zheng zai bo fan"+video);
	}


}
package cc.openhome;
/*
 * 不知道类的名称,得到class对象然后再newINstance;
 * Class clz = Class.forName("Stringname");
 * Object obj = clz.newInstance;
 * 所谓反射机制;
 * 例如:想采用影片链接库来播放,但是制造链接库的人没有,就可以先写个接口放着
 * 
 */


public interface Player {
	 void play(String video);
	
}
package cc.openhome;
/*
 * Class.forName()主要功能
Class.forName(xxx.xx.xx)返回的是一个类,
Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段
 */
import java.util.Scanner;

public class MediaMaster {
	/*
	 * 执行本类;指定cc.openhome.PlayerImpl = cc.openhome.ConsolePlayer
	 */
	public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
		// TODO Auto-generated method stub
		String playImpl =System.getProperty("cc.openhome.ConsolePlayer");
		Player player = (Player) Class.forName(playImpl).newInstance();
		System.out.println("shu ru ni xiang kan d ying pian");
		player.play(new Scanner(System.in).nextLine());
	}

}


Class.forName(xxx.xx.xx)的作用就是要求JVM查找并加载指定的类,如果在类中有静态初始化器的话,JVM必然会执行该类的静态代码段。
而在JDBC规范中明确要求这个Driver类必须向DriverManager注册自己,即任何一个JDBC Driver的 Driver类的代码都必须类似如下:
public class MyJDBCDriver implements Driver {
static {
DriverManager.registerDriver(new MyJDBCDriver());
}
}

2.代码:




3.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java的类机制是指将类的字节码文件到内存中,并在运行时将其转换为可执行的代码的过程。Java的类机制遵循了一定的规则和顺序,可以分为以下几个步骤: 1. :类的第一步是,即将类的字节码文件到内存中。Java的类器负责从文件系统、网络或其他来源类的字节码文件。过程中会进行词法和语法的验证,确保字节码文件的正确性。 2. 链接:类的第二步是链接,即将已经的类与其他类或者符号进行关联。链接分为三个阶段: - 验证:验证阶段确保类的字节码文件符合Java虚拟机规范,包括检查文件格式、语义验证等。 - 准备:准备阶段为静态变量分配内存空间,并设置默认初始值。 - 解析:解析阶段将符号引用转换为直接引用,例如将类或者方法的符号引用解析为对应的内存地址。 3. 初始化:初始化是类的最后一步,在此步骤中会执行类的初始化代码,对静态变量进行赋值和执行静态代码块。类的初始化是在首次使用该类时触发的,或者通过反射方式调用`Class.forName()`方法来强制初始化。 Java的类机制动态的,可以根据需要和卸类,它还支持类的继承、接口实现、内部类等特性。类机制是Java语言的重要特性之一,它为Java提供了强大的动态性和灵活性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值