如何在Java中动态创建一个类

如何在Java中动态创建一个类,第1张

package demo

//使用反射

//Class.forName(className)).newInstance()

class Reflect {

static {

System.out.println("动态创建Reflect类,这是静态代码块")

}

public void speak() {

System.out.println("动态创建Reflect类")

}

}

public class ReflectDemo {

public static void main(String[] args) throws Exception {

Class<?> Demo = Class.forName("demo.Reflect")

Reflect test = (Reflect) Demo.newInstance()

test.speak()

}

}

测试结果:

动态创建Reflect类,这是静态代码块

动态创建Reflect类

一.什么是动态加载类 什么是静态加载类

Class.forName 不仅表示类的类类型,还代表了动态加载类。编译时加载是静态加载类,

运行时加载是动态加载类。

二.为何要使用动态加载类

我们写了一个程序 并没有写A类和B类以及start方法?

我们会发现,我们并不一定用到A功能或B功能,可是编译却不能通过。而在日常的项目中,如果我们写了100个功能,因为一个功能的原因而导致所有功能不能使用,明显使我们不希望的。在这里,为什么会在编译时报错呢?new 是静态加载类,在编译时刻就需要加载所有可能使用到的功能。所以会报错。而在日常中我们希望用到哪个就加载哪个,不用不加载,就需要动态加载类。

使用动态加载类时,我们不用定义100种功能,只需要通过实现某种标准(实现某个接口)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11640892.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存