java 利用java反射機制動態(tài)加載類的簡單實現(xiàn)
更新時間:2016年09月21日 07:41:08 投稿:jingxian
下面小編就為大家?guī)硪黄猨ava 利用java反射機制動態(tài)加載類的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
如下所示:
////////////////// 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; } // 針對消息作出響應(yīng),利用反射導(dǎo)入對應(yīng)的類 public String response(String header, String content) { String result = null; String s = null; try { /* * 導(dǎo)入屬性文件emp.properties,查詢header所對應(yīng) * * 的類的名字 通過反射機制動態(tài)加載匹配的類,所有的類都 * * 被Operator接口隔離 可以通過修改屬性文件、添加新的類(繼 * * 承MsgOperator接口)來擴展協(xié)議 */ s = "org.bromon.reflect." + this.loadProtocal(header); // 加載類 Class<?> c = Class.forName(s); // 創(chuàng)建類的事例 Operator mo = (Operator) c.newInstance(); // 構(gòu)造參數(shù)列表 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); // 調(diào)用方法并且獲得返回 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", "消息內(nèi)容"); } }
以上就是小編為大家?guī)淼膉ava 利用java反射機制動態(tài)加載類的簡單實現(xiàn)的全部內(nèi)容了,希望對大家有所幫助,多多支持腳本之家~
相關(guān)文章
JAVA應(yīng)用系統(tǒng)工具快捷托盤實例代碼
JAVA應(yīng)用系統(tǒng)工具快捷托盤實例代碼,需要的朋友可以參考一下2013-02-02關(guān)于Java中使用jdbc連接數(shù)據(jù)庫中文出現(xiàn)亂碼的問題
這篇文章主要介紹了關(guān)于Java中使用jdbc連接數(shù)據(jù)庫中文出現(xiàn)亂碼的問題,默認的編碼和數(shù)據(jù)庫表中的數(shù)據(jù)使用的編碼是不一致的,如果是中文,那么在數(shù)據(jù)庫中執(zhí)行時已經(jīng)是亂碼了,需要的朋友可以參考下2023-04-04詳解Spring 參數(shù)驗證@Validated和@Valid的區(qū)別
這篇文章主要介紹了詳解參數(shù)驗證 @Validated 和 @Valid 的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01詳談Java枚舉、靜態(tài)導(dǎo)入、自動拆裝箱、增強for循環(huán)、可變參數(shù)
下面小編就為大家?guī)硪黄斦凧ava枚舉、靜態(tài)導(dǎo)入、自動拆裝箱、增強for循環(huán)、可變參數(shù)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08Java實現(xiàn)解析JSON大文件JsonReader工具詳解
這篇文章主要介紹了Java實現(xiàn)解析JSON大文件的工具JsonReader使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-01-01