我有一个类型列表。我想找到一个有资格处理不同价值的特定类。如何通过其方法实现动态地找到类?
在以下示例中,每个实现必须提供supports(String)
方法。并定义这个类支持哪些值。
问题:我没有对象在列表中,但分类型。因此我不能在其上调用自定义方法,如supports()
。
List<Class<MyService>> list;
public Object getInstanceThatSupports(String val) {
val = "TEST";
for (Class<MyService> c : list) {
if (c.supports(val)) { //TODO this is invalid
return c.newInstance().process(val);
}
}
}
public interface MyService {
boolean supports(String val);
void process(String val);
}
public class MyServiceImpl implements MyService {
@Override
public boolean supports(String val) {
return val.equals("TEST");
}
@Override
public void process(String val) {
//handle the value
}
}
我该怎么做到这一点?
使用反射可以的方式,但它不是很清楚你想要什么 – Jens
那么。如果我的输入值是'TEST',我想找到支持该值的'MyService'实现。它由'supports(val)'方法定义。但是我不能在类型上调用这个方法,所以我找不到这种方法。 – membersound
您可以创建一个新实例并将其称为'c.newInstance()。supports(“TEST”);' – Jens