动态加载 静态加载 static Class.forName

阳光穿透心脏的1/2处 2024-03-25 16:48 116阅读 0赞

写这篇文章是看到一篇文章

震惊,一行MD5居然让小伙伴都回不了家!!! - 京东云开发者 - 博客园 (cnblogs.com)

震惊,一行MD5居然让小伙伴都回不了家!!! - 掘金 (juejin.cn)

动态加载 静态加载

Class.forName 代表了动态加载类。

编译时加载是静态加载类,

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

代码为例:

  1. public class Main{
  2. public static void main(String args[]){
  3. String name = "Mike";
  4. if("Tom".equals(name)){
  5. Bean b=new Bean();
  6. b.run();
  7. }
  8. }
  9. }

这段代码编译就通不过,编译时报错。

new 是静态加载类,在编译时就需要加载所有可能使用到的类。

而在日常中我们希望用到哪个就加载哪个,不用不加载,就需要动态加载类。

代码为例:

  1. public class Main{
  2. public static void main(String args[]){
  3. String name = "Mike";
  4. if("Tom".equals(name)){
  5. Class c=Class.forName("com.xxx.Bean");
  6. Bean b=(Bean)c.newInstance();
  7. b.run();
  8. }
  9. }
  10. }

这段代码,就是动态加载。代码逻辑如果没有走进if里,就不会加载Bean这个类。只有使用到了,才会加载。

java动态加载类和静态加载类_scx_white的博客-CSDN博客

static的方法就一直在栈中了,除非你关掉程序,否则就一直占着。而实例化出来的方法,你使用时会留在栈中,使用完了便GC了,而你的静态方法多了,就相当于你玩手机时,把电话本,短信,音乐等所有你能开的都开开了,这时你要是想玩个游戏,不清一下内存,我的2GRAM手机是绝对带不起来的

为什么静态方法会导致性能下降?-CSDN社区

2006年的上古帖子,看看图个乐子。没想到csdn还保存有2006年的数据。

我发现我同事的java代码中所有class的方法都是static,他说这样调用就很方便(因为不用new一个对象了,直接class.方法调用),请问他这样-CSDN社区

发表评论

表情:
评论列表 (有 0 条评论,116人围观)

还没有评论,来说两句吧...

相关阅读

    相关 延迟动态

    延迟加载是你在使用的使用加载,而动态加载是在程序运行时才知道类的名字,然后加载类。延迟加载可以应用在动态和非动态的加载上。 动态加载的例子 String class