2017-07-04 44 views
-2

我有一個關於java的方法參考的問題,格式如下:爲什麼java方法與對象而不是類相關?

acollection.foreach(System.out :: println);

我希望代碼類似於;

acollection.foreach(System.PrintStream :: println);

您能解釋一下將實現(代碼)與對象相關的想法嗎?

+0

那麼,OOP並不是面向類的編程的縮寫...所以如果你不知道OOP是什麼,那麼研究一下呢?首先詢問Google和維基百科。 – Tom

+0

在'forEach(System.out :: println)'中,你要求在實際對象'System.out'上調用'println'。沒有'System.PrintStream'這樣的東西。如果有的話,Java如何知道您想要打印的_什麼printstream? – khelwood

回答

0

PrintStream.println()是一個實例方法,因此必須在實例(對象)上執行。

acollection.foreach(System.out::println);就是這麼做的。它將對System.out執行println集合中的每個元素。

acollection.foreach(System.PrintStream::println);不能工作,因爲沒有給出PrintStream的實例 - 也因爲System.PrintStream不是有效的語句。

相關問題