首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

透过ClassLoader或者Reflection获取接口实现类

2012-06-26 
通过ClassLoader或者Reflection获取接口实现类//定义一个接口public interface ClassInterFace{public Str

通过ClassLoader或者Reflection获取接口实现类
//定义一个接口
public interface ClassInterFace
{
    public String getStr(String className);
}
==================================
//定义一个单例模式的实现类
public class BaseClass implements ClassInterFace
{
    private static BaseClass instance = null;
   
    public static synchronized BaseClass getInstance()
    {
        if (instance == null)  
        instance = new BaseClass();  
        return instance;   
    }
    public String getStr(String ClassName)
    {
        return ClassName;
    }
}
===================================
//通过ClassLoader或者Reflection获取接口实现类
public class ClassLoadTest
{
    /**
     * ClassLoader加载器使用
     */
    public void getClassTest(String className)
    {
        ClassInterFace base = null;
        if (null != className && !"".equals(className)) {
            try {
                base = (ClassInterFace)this.getClass().getClassLoader().loadClass(className).newInstance();
                base.getStr("ClassLoad加载器使用");
            }
            catch(Exception e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 通过反射获取java类
     */
    public void getClassToReflection(String className)
    {
        try {
            ClassInterFace base = (ClassInterFace)Class.forName(className).newInstance();
            base.getStr("反射获取java类");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        ClassLoadTest classLoad = new ClassLoadTest();
        classLoad.getClassTest("com.demo.BaseClass");//指定的java类
        classLoad.getClassToReflection("com.demo.BaseClass");
        BaseClass aa = BaseClass.getInstance();
        aa.getStr("java单态模式");
    }
}

热点排行