那为何要使用匿名内部类

2021-03-10  本文已影响0人  fd32e41da0cf

那为何要使用匿名内部类

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来实现了。

在创建好对象后在去查询数据进行填充。

上一篇 下一篇

猜你喜欢

热点阅读