java - 为什么在 Java 中从容器类而不是它的实例调用方法

标签 java class methods collections call

我正在尝试学习 Java 集合。但是关于调用集合方法,有一种我无法理解的特定语法。像 .toString().sort() e. G。 ;

我不明白为什么我们要从 Arrays 类或 Collections 类调用以下方法。对于打印数组,这在 println() 中调用。

Arrays.toString(myArray);

用于排序列表

Collections.sort(myList);

为什么不呢?

myArray.toString();

myList.sort();

任何人都可以引导我完成它吗?

最佳答案

你的两个例子的原因不同:

数组类型中没有 toString 的自定义实现。对于 MyType[].toString(),开发人员无法“覆盖”数组类型的 toString()。这就是提供帮助器 Arrays.toString 的原因。数组类型的 toString 实现是从 Object 继承的,这几乎总是没有太大帮助。

List.sortList 中的一个 default 方法,由 Java 8 引入。在此之前,只能通过使用Collections.sort。如果您查看 Collections.sort 的源代码,它会将排序本身委托(delegate)给 List.sort。至于为什么一开始就不在List中,只能由API设计者来回答了。不过,我能想到的一个原因是一致性(Collections 有许多静态集合方法,而 Java 直到版本 8 才支持接口(interface)中的静态方法)。

关于java - 为什么在 Java 中从容器类而不是它的实例调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55430036/

相关文章:

ruby - 调用与 Gem 中的方法链接的参数时,yield block 的返回值是多少,用#each 迭代?

java - 如何在序列化为 GWT AutoBean 时保留 LinkedHashMap 的顺序?

java - 如何为每次 java 运行解析 CSV 文件中的单行,并为下一次运行解析下一行?

java - 如何添加一个显示特定文件详细信息的对话框?

java - 父子层次结构在重写时对抛出很重要吗?

C++在类中初始化一个空列表

java - 如何在 JSP 中使用我自己的类,这是一个好方法吗?

java通用集合函数

java - 在方法中写入数组

类和模块方法的 Pythonic 使用