那为何要使用匿名内部类
Think in java上说:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响。
它能够非常好的解决多重继承的问题,在我们程序设计中有时候会存在一些使用接口很难解决的问题,这个时候我们可以利用内部类提供的、可以继承多个具体的或者抽象的类的能力来解决这些程序设计问题。
可以这样说,接口只是解决了部分问题,而内部类使得多重继承的解决方案变得更加完整。
ObjectFactory
它的作用就是创建一个类
protected ObjectFactory objectFactory = new DefaultObjectFactory();
public interfaceObjectFactory{
/**
* 设置一些额外的属性 通过在mybatis-config.xml中objectFactory中properties属性标签设置 , 在初始化mybatis是就会触发这个方法
*/
void setProperties(Properties properties);
/**
* 已默认的构造函数(无参构造)实例化对象
* @return
*/
<T> Tcreate(Class<T> type);
/**
* 指定的构造函数实例化对象
*@paramtype Object type *@paramconstructorArgTypes Constructor argument types
*@paramconstructorArgs Constructor argument values
*@return
*/
<T> Tcreate(Class<T> type, List<Class<?>> constructorArgTypes, List<Object> constructorArgs);
/**
* 判断是否是集合类型。只要能存储其他元素的都叫做集合
* 内部通过isAssignableFrom判断是否继承值Collection类
*@paramtype Object type
*@returnwhether it is a collection or not *@since3.1.0
*/
<T> boolean isCollection(Class<T> type);
}
使用的例子
比如在学校系统中,我们学生除了有基础信息,我们还想临时添加一个成绩的属性用来表示最近一次成绩总分。这个时候我们就可以通过自定义ObjectFactory来实现了。
在创建好对象后在去查询数据进行填充。