利用反射把一个字符串 实例化成 一个带参数的实体类
创建的这个类的需要继承一个接口(Interface) ,因为获取了实例需要强制转换成某一个借口的实例才可以调用其中的方法。
创建一个Class类的引用,调用Class类的静态方法forName(String),参数为类的绝对路径(包含包路径如:org.test.GetClass)。
public class ActionFactory {
private static final String PACKAGE_NAME ="com.englishLesson.";
public static LessonAction getInstance(String type,Context context,Handler handler){
LessonAction action = null;
try {
Class c = Class.forName(PACKAGE_NAME+type);
Constructor con = c.getConstructor(Context.class,Handler.class
);
action = (LessonAction)con.newInstance(context,handler);
} catch (Exception e) {
e.printStackTrace();
}
return action;
}
}
现在我们已经有了一个Object对象,下一步就可以对这个Object进行强制转换了。
假如org.test.GetClass 继承一个叫GetInterface的接口。我们就可以把这个object对象强制转换成这个接口,然后就可以调用其中的方法了。