我在我的 WebApp 中使用了一些反射。我想做的是在做类型案例之后动态调用一个方法——这在编译时也不知道
这是我的代码的结构:
Controller (Interface with one method called 'execute()')
|
|
\|/
BaseController (Abstract Class with 1 abstr method called 'execute()')
/ \
/ _\|
/ GetCarController extends BaseController
|/_
AddCarController extends BaseController
现在我有了使用上述结构的代码:
BaseController baseContr;
Properties prop = new Properties();
prop.load("some inputstream to config.properties");
Constructor cons = Class.forName( prop.getProperty( keyProperty ) ).
getConstructor( Class.forName( prop.getProperty( keyProperty ) ).getClass() );// keyProperty is some input string from user
( ( XXXXXX )cons.newInstance ( new Car(....) ) ).execute();
您所看到XXXXXX
的实际上是我想要一种动态放置类型转换的方法。这种转换必须找到一种方法来调用execute()
方法,AddCarController
或者 GetCarController
我不想直接使用 BaseController 的任何一个实现来调用方法,而是有一种方法可以根据prop.getProperty(keyProperty)
给出的内容来转换它......