zoukankan      html  css  js  c++  java
  • java反射动态加载类Class.forName();

    1,所有的new出来的对象都是静态加载的,在程序编译的时候就会进行加载.而使用反射机制Class.forName是动态加载的,在运行时刻进行加载。

    例子:直接上两个例子

    public class CarFactory {
    	public static void main(String[] args) {
    		if("Jeep".equals(args[0])){
    			Jeep jeep=new Jeep();
    			jeep.start();
    		}
    		if("BYD".equals(args[0])){
    			BYD byd=new Byd();
    			byd.start();
    		}
    	}
    }
    

    以上代码如果在编译时候,缺少Jeep或者BYD任何一个类,编译都会报错,即使你现在暂时只想用Jeep,没有BYD。再看反射的代码

    public class CarFactory {
    	public static void main(String[] args) {
    		try{
    			Class c=Class.forName(args[0]);//动态加载类,运行时刻加载类
    			Car car=c.newInstance();//car是接口,所有汽车实现该接口,都有start方法
    			car.start;//启动,多态机制
    		}catch (Exception e) {
    			// TODO: handle exception
    		}
    	}
    }
    

    以上代码是第一段代码的改进,即使只有Jeep类,也能使用,编译时候不会报错。后面可以随便添加Car,扩展性好

  • 相关阅读:
    javascript初识
    css定位及叠放次序
    css精灵图
    css元素的显示及隐藏、文字隐藏
    css浮动
    盒子模型的边框、内边距、外边距、阴影
    css背景
    css中的显示与隐藏
    css定位
    css的布局与版心布局
  • 原文地址:https://www.cnblogs.com/hts-technology/p/7826612.html
Copyright © 2011-2022 走看看