[javaSE] 反射-动态加载类

Class.forName(“类的全称”)

①不仅表示了类的类类型,还代表了动态加载类

②请大家区分编译,运行

③编译时刻加载类是静态加载类,运行时刻加载类是动态加载类

Ⅰ所有的new对象都是静态加载类

在编译的时刻就要去检测该类是否存在,如果不存在,编译失败。

//对于这种情况,静态加载不适用,因为我们需要根据输入来确定加载哪个类

package com.tsh.reflect;

class ReflectLoadDemo {
    public static void main(String[] args) {

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

Ⅱ动态加载可以实现当使用的时候才去加载

package com.tsh.reflect;

class ReflectLoadDemo {
    public static void main(String[] args) {
        if(args[0].equals("Word")){
            try{
                Class c=Class.forName("com.tsh.reflect.Word");
                c.newInstance();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
}
class Word{}

Ⅲ是代码更具有扩展性的改动,定义interface接口规范

时间: 2024-12-11 08:32:02

[javaSE] 反射-动态加载类的相关文章

java 反射机制与动态加载类学习要点

获取Class类的对象: 假设Foo是一个类,Foo foo = new Foo():则 第一种:Class c1 = Foo.class; 第二种:Class c2 = foo.getClass(); 第三种:Class c3 = Class.forName("com.nudt.reflection.Foo"); //会抛出异常 此时  c1 == c2 == c3 为true 也可以通过c1\c2\c3创建Foo的实例: Foo foo = (Foo)c1.newInstance(

Java 反射理解(二)-- 动态加载类

Java 反射理解(二)-- 动态加载类 概念 在获得类类型中,有一种方法是 Class.forName("类的全称"),有以下要点: 不仅表示了类的类类型,还代表了动态加载类 编译时刻加载类是静态加载类,运行时刻加载类是动态加载类 演示 我们以具体的代码来演示什么是动态加载类和静态加载类: 新建:Office.java: class Office { public static void main(String[] args) { // new 创建对象,是静态加载类,在编译时刻就需

Java反射第二课 动态加载类

在第一节课中我们讲的第三种方法 Class.forName("类的全称"); 不仅表示了类的类类型,还代表了动态加载类 请大家区分编译,运行 编译时刻加载类是静态加载类,运行时刻加载类是动态加载类 现在的开发工具比如eclipse把编译过程给隐藏了 下面做一个实验 比如用记事本编写下面的Office.java文件 class Office { public static void main(String[] args) { if(("Word").equals(ar

Java--Reflect(反射)专题2——动态加载类

转载请注明:http://blog.csdn.net/uniquewonderq 首先区分什么是动态加载,什么是静态加载? Class.forName("类的全称");//第三种表达类类型的方式 不仅代表了类的类类型,还代表了动态加载类 要区分编译和运行. 编译时刻加载类是静态加载类.运行时刻加载类是动态加载类. 在编译时刻就需要加载所有的可能使用到的类. 演示代码如下:功能性的类,最好使用动态加载.如,更新,升级,增加新功能等. 首先是一个接口,用于动态加载的.稍候可体验出来. pa

利用反射动态加载程序集中所有的继承于Form的子类

利用C# 的反射,能够轻松快捷的创建指定类型的未知对象,比如继承某个接口的类,继承于某个基类的子类. 问题场景: 我自己创建一个解决方案,这个方案里面放了很多的小工具,每一个工具都是一个小窗体,于是,我就用一个MID窗体来包含这些窗体. 这样问题就来了,每一次我添加一个小工具,我就必须在MID窗体里面添加一个按钮,或者是一个菜单.在事件写上,让某个窗体显示出来.这类无聊的语句. 那么能不能让程序自动查找程序集中的窗体,自动创建按钮,或者菜单. 这样就可以达到动态创建的目的了 解决方案: 假设我们

Java动态加载类

详见:https://blog.csdn.net/zai_xia/article/details/80026325 扩展:java反射机制与动态加载类 https://www.cnblogs.com/wzk-0000/p/9322866.html 在讲解动态加载类之前呢,我们先弄清楚为什么要动态加载类,静态加载不行吗?我们可以看下面的实例: 我在文件夹里写了Office.java 类和 Word.java类,如下: Office.java class Office{ public static

Java-反射之动态加载类

在Java当中,加载类分为动态加载和静态加载,其中,在编译时刻加载类叫做静态加载类,在运行时刻加载类叫做动态加载类. 产生Class对象的方式中,有一个是Class.forName("类的全称"),这个不仅仅表示类的类类型,而且还表示了动态加载类. 1 package com.example.demo; 2 3 public class Demo { 4 public static void main(String[] args) { 5 if (args[0].equals(&quo

Class类动态加载类的用法

编译时刻加载类出现的问题:一个功能有错,所有功能都用不了 动态加载类:

tomcat 5.5 动态加载类

转载于:http://www.itxuexiwang.com/a/javadianzishu/tomcat/2016/0225/161.html?1456480735 开发使用的是tomcat5.5.27,对于WEB-INF/classes下面的类做了修改,tomcat就会就会自动重启,然后紧接着就是内存溢出.调试比较麻烦.昨天研究了一下tomcat的源代码,对类的加载机制作了一点点修改,让它动态加载类,这样调试的时候如果修改了java文件就不用重启 tomcat了.具体步骤如下: 修改Weba