java 利用java反射机制动态加载类的简单实现

 更新时间:2016年09月21日 07:41:08   投稿:jingxian   我要评论
下面小编就为大家带来一篇java 利用java反射机制动态加载类的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

如下所示:

////////////////// Load.java
package org.bromon.reflect;
import java.util.ArrayList;
import java.util.List;
public class Load implements Operator {
 @Override
 public List<?> act(List<?> params) {
 // TODO Auto-generated method stub
 List<String> result=new ArrayList<String>();
 result.add(new String("加载成功"));
 return result;
 }
}
/////////////////// Operator.java
package org.bromon.reflect;
import java.util.*;
public interface Operator {
 public List<?> act(List<?> params);
}

/////////////Store.java
package org.bromon.reflect;
import java.util.ArrayList;
import java.util.List;

public class Store implements Operator {
 @Override
 public List<?> act(List<?> params) {
 // TODO Auto-generated method stub
 List<String> result=new ArrayList<String>();
 result.add(new String("Store"));
 return result;
 }
}
///////////////Success.java
package org.bromon.reflect;
import java.util.List;
import java.util.ArrayList;

public class Success implements Operator {
 @Override
 public List<?> act(List<?> params) {
 // TODO Auto-generated method stub
 List<String> result=new ArrayList<String>();
 result.add(new String("操作成功"));
 return result;
 }
}

////////////////////////TestReflect.java
package org.bromon.reflect;
import java.io.FileInputStream;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Properties;
import java.util.List;
public class TestReflect {
 private String loadProtocal(String header) {
 String result = null;
 try {
  Properties prop = new Properties();
  FileInputStream fis = new FileInputStream("emp.properties");
  prop.load(fis);
  result = prop.getProperty(header);
  fis.close();
 } catch (Exception e) {
  System.out.println(e);
 }
 return result;
 }
 // 针对消息作出响应,利用反射导入对应的类
 public String response(String header, String content) {
 String result = null;
 String s = null;
 try {
  /*
  * 导入属性文件emp.properties,查询header所对应
  *
  * 的类的名字 通过反射机制动态加载匹配的类,所有的类都
  *
  * 被Operator接口隔离 可以通过修改属性文件、添加新的类(继
  *
  * 承MsgOperator接口)来扩展协议
  */
  s = "org.bromon.reflect." + this.loadProtocal(header);
  // 加载类
  Class<?> c = Class.forName(s);
  // 创建类的事例
  Operator mo = (Operator) c.newInstance();
  // 构造参数列表
  Class<?> params[] = new Class[1];
  params[0] = Class.forName("java.util.List");
  // 查询act方法
  Method m = c.getMethod("act", params);
  List<String> args = new ArrayList<String>();
  args.add(content);
  // 调用方法并且获得返回
  Object returnObject = m.invoke(mo, args);
  List<?> list=(List<?>)returnObject;
  System.out.println(list.get(0));
 } catch (Exception e) {
  System.out.println("Handler-response:" + e);
 }
 return result;
 }
 public static void main(String args[]) {
 TestReflect tr = new TestReflect();
 tr.response("2000", "消息内容");
 }
}

以上就是小编为大家带来的java 利用java反射机制动态加载类的简单实现的全部内容了,希望对大家有所帮助,多多支持澳门金沙网上娱乐~

相关文章

  • 浅谈Spring Security LDAP简介

    浅谈Spring Security LDAP简介

    这篇文章主要介绍了浅谈Spring Security LDAP简介,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Spring Cloud中Eureka开启密码认证的实例

    Spring Cloud中Eureka开启密码认证的实例

    这篇文章主要介绍了Spring Cloud中Eureka开启密码认证的实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Java实现排队论的原理

    Java实现排队论的原理

    这篇文章主要为大家详细介绍了Java实现排队论的原理,对排队论感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 详解利用SpringMVC拦截器控制Controller返回值

    详解利用SpringMVC拦截器控制Controller返回值

    这篇文章主要介绍了详解利用SpringMVC拦截器控制Controller返回值,通过定义一个StringResult注解,在访问方法的时候返回StringResult中的内容,有兴趣的可以了解一下。
    2017-01-01
  • redis与ssm整合方法(mybatis二级缓存)

    redis与ssm整合方法(mybatis二级缓存)

    本文给大家介绍redis与ssm整合方法(mybatis二级缓存)。主要是利用redis去做mybatis的二级缓存,mybaits映射文件中所有的select都会刷新已有缓存,如果不存在就会新建缓存,所有的insert,update操作都会更新缓存
    2017-12-12
  • java编程题之合并两个排序的链表

    java编程题之合并两个排序的链表

    这篇文章主要为大家详细介绍了java编程题之合并两个排序的链表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • Java基础之Integer使用的注意事项及面试题

    Java基础之Integer使用的注意事项及面试题

    这篇文章主要给大家介绍了关于Java基础之Integer使用注意事项及面试题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-12-12
  • java 根据经纬度获取地址实现代码

    java 根据经纬度获取地址实现代码

    这篇文章主要介绍了 java 根据经纬度获取地址实现代码的相关资料,需要的朋友可以参考下
    2017-05-05
  • 基于Java数组实现循环队列的两种方法小结

    基于Java数组实现循环队列的两种方法小结

    下面小编就为大家分享一篇基于Java数组实现循环队列的两种方法小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Java 利用dom方式读取、创建xml详解及实例代码

    Java 利用dom方式读取、创建xml详解及实例代码

    这篇文章主要介绍了Java 利用dom方式读取、创建xml的相关资料,需要的朋友可以参考下
    2017-03-03

最新评论