我有一個類型列表。我想找到一個有資格處理不同價值的特定類。如何通過其方法實現動態地找到類?
在以下示例中,每個實現必須提供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