【发布时间】:2018-10-23 21:36:09
【问题描述】:
我正在编写一个简单的方法,它返回一个 int 数组的最小值和最大值。
return new int[]{Arrays.stream(arr).min().getAsInt(), Arrays.stream(arr).max().getAsInt()};
这让我开始思考,为什么我能够使用 getAsInt() 方法,而它来自与我正在使用的类(数组)不同的类?我什至不必导入 OptionalInt 类,这是为什么呢?在这种特殊情况下,是什么决定了我可以使用和不能使用哪些方法?提前感谢您的任何回复。
【问题讨论】:
-
Arrays.stream(arr).min().getAsInt()这样的表达式与(((Arrays.stream(arr)).min()).getAsInt())相同。计算第二个最内层括号 (Arrays.stream(arr)) 中的表达式,结果具有特定类型,该类型决定下一个外部级别可以应用哪些方法。 -
你有什么样的进口?如果您使用了诸如
import java.util.*之类的一揽子导入,那将包括OptionalInt。 -
您始终可以在给定对象上使用任何可访问的方法。导入只需要识别不合格的类名。
标签: java methods inner-classes