gpt4 book ai didi

java - JDK 源码 : code repetition Collection. java 和 Set.java

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:45 24 4
gpt4 key购买 nike

在 JDK 8 中,java.util.Collection

开头
public interface Collection<E> extends Iterable<E> {
// Query Operations

/**
* Returns the number of elements in this collection. If this collection
* contains more than <tt>Integer.MAX_VALUE</tt> elements, returns
* <tt>Integer.MAX_VALUE</tt>.
*
* @return the number of elements in this collection
*/
int size();

有趣的是,java.util.Set

开头
public interface Set<E> extends Collection<E> {
// Query Operations

/**
* Returns the number of elements in this set (its cardinality). If this
* set contains more than <tt>Integer.MAX_VALUE</tt> elements, returns
* <tt>Integer.MAX_VALUE</tt>.
*
* @return the number of elements in this set (its cardinality)
*/
int size();

在接口(interface)中覆盖方法声明的目的是什么?为什么 extends 不够用?

编辑 java.util.List 也显示了冗余,List.size() 的javadoc 与Collection.size(),并且不引入任何新术语:

public interface List<E> extends Collection<E> {
// Query Operations

/**
* Returns the number of elements in this list. If this list contains
* more than <tt>Integer.MAX_VALUE</tt> elements, returns
* <tt>Integer.MAX_VALUE</tt>.
*
* @return the number of elements in this list
*/
int size();

最佳答案

除了改变行为之外,重写方法还有很多用途。它可以更改方法的签名(使用协变覆盖优化返回类型)、添加注释、扩大可访问性(在子类中将 protected 方法变为公共(public)方法)或改进规范(表示为 Javadoc)。在这种情况下,覆盖存在,因此 Set Javadoc 可以定义术语“cardinality”。

关于java - JDK 源码 : code repetition Collection. java 和 Set.java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37845625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com