Java类别载入器

Java类别载入器

Java的动态特性两种
1,隐式的:

当程序设计师用到"new"这个关键字的时候,会让类装入器依需求载入相应的类别

2,显示的:

分为两种:
1,继由java.lang.Class里的forName()方法
2,继由java.lang.ClassLoader里的loadClass()方法

隐式的动态特性

在执行java文件时,只有单独的变量声明是不会载入相应的类的,
只有在new生成实例时才会载入
例如:

public class A {
private int id;
private String name;

public int getId() {
    return 2;
}
public String getName() {
    return "李四";
    }
}

类B类A雷同
public class Main {

public static void main(String[] args) {
    A a = new A();
    B b;
    System.out.println(a.getId()+a.getName()+"\n"+b.getId()+b.getName());
    }

运行时会报未初始化变量b,JVM只载入了A,而没有载入B

显示的动态特性

java.lang.Class里的forName()方法
类别载入器会依据继承体系最上层的类别往下依序载入,直到所有的祖先类别都载入后,才轮到自己载入
例如:
创建接口Ass
public interface Ass {
public void start();
}
创建类AssClass实现Ass
public class AssClass implements Ass{
@Override
public void start() {
System.out.println("---------");
}
}
public class Main1 {
public static void main(String[] args) throws Exception{
java.lang.Class c = java.lang.Class.forName(args[0]);
Object o = c.newInstance();
Ass a = (Ass) o;
a.start();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值