java 利用java反射機(jī)制動態(tài)加載類的簡單實現(xiàn)
更新時間:2016年09月21日 07:41:08 投稿:jingxian
下面小編就為大家?guī)硪黄猨ava 利用java反射機(jī)制動態(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)
*
* 的類的名字 通過反射機(jī)制動態(tài)加載匹配的類,所有的類都
*
* 被Operator接口隔離 可以通過修改屬性文件、添加新的類(繼
*
* 承MsgOperator接口)來擴(kuò)展協(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反射機(jī)制動態(tài)加載類的簡單實現(xiàn)的全部內(nèi)容了,希望對大家有所幫助,多多支持腳本之家~
相關(guān)文章
Java Elastic Job動態(tài)添加任務(wù)實現(xiàn)過程解析
這篇文章主要介紹了Java Elastic Job動態(tài)添加任務(wù)實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08
Java8中Lambda表達(dá)式的理解與應(yīng)用
Java8最值得學(xué)習(xí)的特性就是Lambda表達(dá)式和Stream?API,如果有python或者javascript的語言基礎(chǔ),對理解Lambda表達(dá)式有很大幫助,下面這篇文章主要給大家介紹了關(guān)于Java8中Lambda表達(dá)式的相關(guān)資料,需要的朋友可以參考下2022-02-02
Java concurrency之互斥鎖_動力節(jié)點Java學(xué)院整理
本文通過示例代碼給大家介紹了Java concurrency之互斥鎖的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-06-06
DOM解析XML報錯Content is not allowed in prolog解決方案詳解
這篇文章主要介紹了DOM解析XML報錯解決方案詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10
Java關(guān)鍵字詳解之final static this super的用法
this用來調(diào)用目前類自身的成員變量,super多用來調(diào)用父類的成員,final多用來定義常量用的,static定義靜態(tài)變量方法用的,靜態(tài)變量方法只能被類本身調(diào)用,下文將詳細(xì)介紹,需要的朋友可以參考下2021-10-10
java公眾平臺通用接口工具類HttpConnectUtil實例代碼
下面小編就為大家分享一篇java公眾平臺通用接口工具類HttpConnectUtil實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01

