Java 我可以使用哪些方法?
我正在编写一个简单的方法,返回int数组的最小值和最大值Java 我可以使用哪些方法?,java,methods,inner-classes,Java,Methods,Inner Classes,我正在编写一个简单的方法,返回int数组的最小值和最大值 return new int[]{Arrays.stream(arr).min().getAsInt(), Arrays.stream(arr).max().getAsInt()}; 它让我思考,为什么我能够使用getAsInt()方法,而它来自与我正在使用的(数组)不同的类?我甚至不需要导入Optionant类,为什么?是什么决定了在这种特殊情况下我可以和不能使用哪些方法?提前感谢您的回复。这是因为方法min()返回一个optiona
return new int[]{Arrays.stream(arr).min().getAsInt(), Arrays.stream(arr).max().getAsInt()};
它让我思考,为什么我能够使用getAsInt()方法,而它来自与我正在使用的(数组)不同的类?我甚至不需要导入Optionant类,为什么?是什么决定了在这种特殊情况下我可以和不能使用哪些方法?提前感谢您的回复。这是因为方法
min()
返回一个optionant
对象。然后可以调用方法getAsInt()
。您不是从类数组调用该方法。每个方法都返回一个特定类型的值。在数组上
尤其是您只调用流
方法:有更多方法,但这是接受int
s数组的方法。
然后,它生成一个IntStream
,它有max
/min
创建一个optionant
,您可以在该对象上调用getAsInt
,而不是在数组上调用
也许你在问,你是否可以在“从某处获得”的对象上调用方法,而不必直接导入它们的类:答案是肯定的,这已经发生在最简单的“Hello World”中:当你编写System.ou.println(…)
,你在,编写“Hello World”时没有人导入它。类似于Arrays.stream(arr).min().getAsInt()
的表达式与((Arrays.stream(arr)).min().getAsInt()相同。
。第二个最里面的括号(Arrays.stream(arr)
)中的表达式将被计算,结果具有特定的类型,该类型决定了下一个外部级别可以应用哪些方法。您有什么类型的导入?如果您使用了某种一揽子导入,如import java.util.*
,这将包括optionant
。您始终可以在给定对象上使用任何可访问的方法。导入仅用于标识非限定类名。