看看不经常使用的AttributeList源码 Java 9

    AttributeList继承了ArrayList,不过是在包javax.management包中,看名字,难道叫“属性”List。结合下面的两张图,能够清晰地看到这个类的关系。java

    表示MBean的属性值的列表。请参阅MBeanServer和MBeanServerConnection的getAttribute和setAttribute方法。安全

    出于兼容性的缘由,能够向AttributeList中添加非属性实例的对象,尽管这是很是不受鼓励的。可是,AttributeList能够是类型安全的,这意味着添加不是属性的对象的尝试将产生IllegalArgumentException。当方法asList()被调用时,AttributeList就成为类型安全的。3d

    如下是AttributeList的构造方法,这里能够看到初始化的参数和须要是Attribute的列表或者AttributeList。AttributeList(List<Attribute> list)是特有的,其余是继承的父类,固然会作一个类型判断x == null || x instanceof Attribute日志

    而后咱们看看这个add是怎么实现的,其中比较有兴趣的应该是ensureCapacityInternal怎么处理的对象

    其实调用的仍是grow方法,可是实现的稍微有点不一样,可是为何类里又写一个呢blog

    AttributeList里面的特有方法并很少,能够看到add和set的方法,用了Object和Attibute两种方式,就是前面说的兼容性问题吗?为何不让这类作的事情专注一点呢?继承

    

    为了搞定上面的问题,做者还写了一个asList方法,这里先看一下AttributeList中的两个字段,一个叫类型安全用来判断,一个是受污染的,就是混合的表示List结果。asList表示会设施typeSafe等于true,那么你添加其余类型的就会报错了。ci

加asList日志输出:get

最后咱们看看Attribute这是一个什么东西,其实就是一个键值对it

 

   下次继续

有什么讨论的内容,能够加我公众号:

相关文章
相关标签/搜索