Java 我可以使用哪些方法?

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

我正在编写一个简单的方法,返回int数组的最小值和最大值

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
。您始终可以在给定对象上使用任何可访问的方法。导入仅用于标识非限定类名。