zoukankan      html  css  js  c++  java
  • java 反射,插件机制,简易插件

    1 新建一个项目 iaction,并export为iaction.jar
    
    package com.tianditu.iaction;
    
    public interface IFly {
        public void fly();
    }
    
    
    2 新建一个项目 action,引用上述jar包,并实现接口IFly
    
    package com.tianditu.action;
    
    import com.tianditu.iaction.IFly;
    
    public class Firefly implements IFly {
    
        @Override
        public void fly() {
            System.out.println("萤火虫在飞翔");
        }
    
    }
    
    3 新建一个项目 exam,并引用iaction.jar包
    
    package com.tianditu.exam;
    
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLClassLoader;
    
    import com.tianditu.iaction.IFly;
    
    public class Program {
    
        public static void main(String[] args) {
    
            try {
                URL url=new URL("file:c:/action.jar");//将action.jar放到某个位置
                URLClassLoader myClassLoader=new URLClassLoader(new URL[]{url},Thread.currentThread().getContextClassLoader());
                Class<?> myClass=myClassLoader.loadClass("com.tianditu.action.Firefly");//反射实例化
                IFly firefly=(IFly)myClass.newInstance();
                firefly.fly();
                
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
            
        }
    
    }
  • 相关阅读:
    静态代理模式
    当对象或属性为空时,如何安全的给默认值
    linux抓取日志
    BigDecimal进行比较
    int与Double类型转换
    通过配置文件的key得值
    ObjectNode ArrayNode JsonNode
    java.lang.NoSuchFieldError报错解决方案
    BigDecimal.setScale 处理java小数点
    Jmeter实现压力测试(多并发测试)
  • 原文地址:https://www.cnblogs.com/i80386/p/2893048.html
Copyright © 2011-2022 走看看