专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Class.forName动态加载类

Class.forName(“类的全称”)

Class.forName(“类的全称”)不仅仅代表类的类类型 还代表了动态加载类

动态加载和静态加载

编译时刻加载类是静态加载类、运行时刻加载类是动态加载类 注意:区分编译 运行的区别

静态加载

new 类的实例对象 是编译时刻的静态加载类

运行时刻

public class Office {

    public static void main(String[] args) {

        if(("Word").equals(args[0])){
            Word w=new Word();
            w.start();
        }
        if(("Excel").equals(args[0])){
            Excel w=new Excel();
            w.start();
        }
    }
}

编译的时候,类找不到,方法找不到 ,编译不通过

Word 不一定用 ,Excel不一定用

存在word ,但还是用不了,因为我们类是做静态加载 编译时刻就需要加载所有可能使用到的类 但是其中有一个不存在或者错误 就无法编译通过

动态加载类 (不能因为一个影响所有)

如果我们需要存在一个功能就用一个功能呢 ?而不是一个功能有问题,其他功能就无法使用?

所以我们需要动态加载类,在运动时加载,

动态加载类的方法

Class.forName(“类的全名”)

使用原则: 功能性的类使用动态加载

使用技巧

相同的功能 使用接口去指定标准,比如PPT ,EXCEL ,Word

package com.javatest;

public interface Officeable {

    public void start();
}

package com.javatest;

public class Word  implements Officeable{

    @Override
    public void start() {

        System.out.println("Excel ");

    }

}


package com.javatest; public class Office { public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { String str="Excel"; if(("Word").equals(str)){ Word w=new Word(); w.start(); } if(("Excel").equals(str)){ Class c1= Class.forName("com.javatest.Excel"); Officeable e=(Officeable)c1.newInstance(); } } }

文章永久链接:https://tech.souyunku.com/23698

未经允许不得转载:搜云库技术团队 » Class.forName动态加载类

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们