我正在尝试学习 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.sort
是 List
中的一个 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/