java 應用java反射機制靜態加載類的簡略完成。本站提示廣大學習愛好者:(java 應用java反射機制靜態加載類的簡略完成)文章只能為提供參考,不一定能成為您想要的結果。以下是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反射機制靜態加載類的簡略完成的全體內容了,願望對年夜家有所贊助,多多支撐~