我有一個兩個簡單的類,並使用反射模式調用方法。 我想寫模塊編程。 假設我們有一個數據庫表中保持模塊名稱:如何使用消費者和供應商,而不是反思java 8
Id moduleName methodName ClassName active
1 sample a com.examle.sample true
2 SMS sendSMS com.example.SMS false
3 Email sendEmail com.example.Email false
... ... ... ...
激活時是真模塊必須activated.So當我寫一個程序,並編譯,我不喜歡再編譯整個MyApp的。所以我使用反射模式來調用模塊。請參閱代碼。
public class Sample {
public void a() {
System.out.println("Call Method a");
}
}
public class SMS {
public void sendSMS(String str) {
System.out.println("send SMS ok");
}
}
public class Email {
public void sendEmail(String str) {
System.out.println("send Email ok");
}
}
public class SampleMainClass {
public static void main(String[] args) {
//coonect to database and fetch all record in tables
while(record.next){
if (record.getActive()){
Object o = Class.forName(record.getClssName()).newInstance() ;
Method method = o.getClass().getDeclaredMethod(record.getMethodName());
method.invoke(o);
}
}
}
輸出
Call Method a
所以我在Java 8聽見,反射圖案是棄用,取而代之的是,我們可以利用消費者和供應商。
如何使用消費者和供應商代替反思在java 8?
謝謝。
你的例子不是一個很好的用例,因爲它首先使用反射是沒有意義的。嘗試提供一個示例來展示反射的* need *,而不是* how *它的使用。 – shmosel