У меня есть два простых класса и используйте шаблон отражения для метода invoke. Я хочу написать программирование модуля. Предположим, у нас есть таблица в базе данных, которые держат название модулей:Как использовать потребитель и поставщик вместо Reflection in 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, картина отражения принизить и вместо того, что мы можем использовать потребитель и поставщик.
Как использовать потребитель и поставщик вместо Reflection in java 8?
Спасибо.
Ваш пример не является хорошим вариантом использования, поскольку в первую очередь не имеет смысла использовать отражение. Попробуйте представить пример, демонстрирующий * потребность * для отражения, а не * как * он используется. – shmosel