Java集合类框架源码分析 之 RoleList源码解析 【6】

该类继承于ArrayList,针对Role进行了一些扩展。其他方法和ArrayList中基本相同,源码不做针对性分析:

看一下类简介:

/**
 * 代表了一个roles的列表,作为方法setRoles()的参数,去创建一个关联关系,并且尝试在同一个关系中设置多个角色。
 * A RoleList represents a list of roles (Role objects). It is used as
 * parameter when creating a relation, and when trying to set several roles in
 * a relation (via 'setRoles()' method). It is returned as part of a
 * RoleResult, to provide roles successfully retrieved.
 *
 * @since 1.5
 */

/* 不扩展ArrayList而单独创建一个RoleList的原因是遗留方法 add(Role)会覆盖 ArrayList 中的add(E),并且 RoleList.add()返回值是void,但是 ArrayList.add()是boolean.
   对于其他的方法,如set(int,Role)也一样,巴拉巴拉巴拉巴拉..
   我们也同样不能使用协方差去复制大多数的重要方法,并让他们返回Role。因为那样会破坏子类中覆盖那些方法的返回类型。最后,我们不能实现Iterable,因此可以这样写:
   for (Role r:roleList){}
   因为ArrayList<>已经实现了Iterable<>,并且同一个类不能实现同一个接口类的两个版本,作为替换,我们提供了 asList() 方法&#x

你可能感兴趣的:(Java集合类源码分析,RoleList源码解析)