如下所示:
////////////////// 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反射机制动态加载类的简单实现的全部内容了,希望对大家有所帮助,多多支持小牛知识库~
本文向大家介绍简单总结Java的反射机制的运用,包括了简单总结Java的反射机制的运用的使用技巧和注意事项,需要的朋友参考一下 Java 的反射机制是使其具有动态特性的非常关键的一种机制,也是在JavaBean 中广泛应用的一种特性。 简单来说,一个类或者一个对象是拥有下面几种属性的: Method,Constructor,Field,其大致结构类图如下: 我们现在用代码来说明问题: 首先,我们看
本文向大家介绍java 反射机制,包括了java 反射机制的使用技巧和注意事项,需要的朋友参考一下 本文导引: 通过反射机制 获取类的基本信息 获取类的注解信息 获取泛型信息 output: 下面的例子,是通过反射机制获取类的注解信息。 output: 下面的例子,是通过反射机制获取泛型信息 output: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多
问题内容: 我查找了语法并搜索了api,但仍然对该过程感到困惑。我还搜索了Stackoverflow。加载类并从中动态创建对象的正确方法是什么?换句话说,我希望用户指定要创建的对象类型,然后创建该类型的对象。我不需要菜单,因为我希望他们能够选择当前目录中的任何类。 问题答案: 假设该类具有无参数构造函数,则最简单的方法是- 参考-java.lang.Class
本文向大家介绍利用反射获取Java类中的静态变量名及变量值的简单实例,包括了利用反射获取Java类中的静态变量名及变量值的简单实例的使用技巧和注意事项,需要的朋友参考一下 JAVA可以通过反射获取成员变量和静态变量的名称,局部变量就不太可能拿到了。 其中要查看的Java类是: 以上这篇利用反射获取Java类中的静态变量名及变量值的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望
本文向大家介绍java 实现反射 json动态转实体类--fastjson,包括了java 实现反射 json动态转实体类--fastjson的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,大家还是直接看代码吧~ 补充:使用fastjson 进行jsonObject转实体类对象 首先引入相关jar包, 假设有一个实体类User 然后通过fastJson进行类型转换 以上为个人经验,希望
主要内容:java.lang.Class 类,java.lang.reflect 包实现 Java 反射机制的类都位于 java.lang.reflect 包中,java.lang.Class 类是 Java 反射机制 API 中的核心类。本节将从这两个方面讲解 Java 反射机制 API。 可参考《Java反射机制的基本概念》一节中介绍的关于 Java 反射机制获取类对象相关信息的方法,来学习本节内容。 java.lang.Class 类 java.lang.Class 类是实