java动态方法调度
互联网上有很多关于动态调度的信息,我感觉自己像一只鸡,因为我无法实现它。请帮帮我。以下是我想做的
ClassA{
public void createReq(){
}
public String postReq(){
}
}
ClassB{
@Test
public void myTest(){
Class A = new ClassA();
a.createReq();
String test = a.getResponse();
/* Not sure how do i do this part */
}
因此,我在myTest
方法中得到一个字符串'test'
。我想创建一个扩展ClassB
的ClassC
,并编写一个方法,在步骤(a.getResponse()
)之后不久验证myTest
中返回的字符串
如果没有ClassC
实现,我只想简单地结束测试。如果只有ClassC
存在并实现了一个验证方法,我希望验证能够完成
我该怎么做?请帮忙。谢谢
# 1 楼答案
尝试用反射加载ClassC。 如果尝试失败,则ClassC不存在,因此默认情况下验证正常。 如果ClassC存在,请尝试找到合适的方法,并用反射调用它。 如果找不到该方法,那么验证在默认情况下也可以(我猜)。 如果找到了方法,对它的调用返回true,那么就完成了验证。如果此调用返回false,则验证失败
查看这些链接,我想你应该明白我的意思
http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#forName%28java.lang.String%29
http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getMethod%28java.lang.String,%20java.lang.Class...%29
http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Method.html#invoke%28java.lang.Object,%20java.lang.Object...%29