第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么當我們使用 super 時 Java 8 :: 運算符不適用于

為什么當我們使用 super 時 Java 8 :: 運算符不適用于

躍然一笑 2022-06-30 10:56:22
下面的代碼工作Function fun1= super::equalsFunction fun2= Object::hashCode 但下面的代碼不是Function fun1= Object::equalsFunction fun2= super::hashCode 即使都是 Object 類中的實例方法,這里的概念是什么。我在某處讀過主要內(nèi)容:對象::實例方法類::靜態(tài)方法類::實例方法
查看完整描述

4 回答

?
白板的微信

TA貢獻1883條經(jīng)驗 獲得超3個贊

Function接口是一個函數(shù)式接口,表示一個接受一個參數(shù)并返回一個值的函數(shù)。

super::equals之所以有效,是因為它是一個接受一個參數(shù)并返回一個值的函數(shù)。

Object::equals不起作用,因為它是一個接受兩個參數(shù)并返回一個值的函數(shù)。

如果您有 form 的方法引用,ClassName::instanceMethod則它表示的函數(shù)將有一個額外的參數(shù) - 調(diào)用該方法的對象。根據(jù)文檔

方法引用的等效 lambda 表達式String::compareToIgnoreCase將具有形式參數(shù) list (String a, String b),其中ab是用于更好地描述此示例的任意名稱。方法引用將調(diào)用該方法a.compareToIgnoreCase(b)

super::equals是形式instance::instanceMethod,所以沒有問題并且可以按您的預(yù)期工作。

用于Object::equals和的正確功能接口類型super::hashCodeBiFunction<Object, Object, Boolean>IntSupplier。

另外,不要使用原始類型。


查看完整回答
反對 回復(fù) 2022-06-30
?
小怪獸愛吃肉

TA貢獻1852條經(jīng)驗 獲得超1個贊

java.util.Function是一個接受一個參數(shù)的函數(shù)。

super::equals是一個接受一個參數(shù)(super與之比較的對象)的函數(shù),因此它可以工作。Object::equals是一個接受兩個參數(shù)的函數(shù):目標對象和要比較的對象,因此它不起作用。

同樣,Object::hashCode是一個參數(shù)的函數(shù),但是super::hashCode參數(shù)的函數(shù)。


查看完整回答
反對 回復(fù) 2022-06-30
?
絕地無雙

TA貢獻1946條經(jīng)驗 獲得超4個贊

當您編寫 時super::methodName,您正在為類的特定實例創(chuàng)建方法引用。因此,功能接口的方法(您分配此方法引用)必須期望與具有相同數(shù)量的參數(shù)methodName。

當您編寫ClassName::methodName, ifmethodName不是靜態(tài)方法時,您是在類的任意實例上創(chuàng)建方法引用。因此,功能接口的方法(您分配此方法引用)必須期望與 has + 1 相同數(shù)量的參數(shù)methodName(額外的參數(shù)是將在其上執(zhí)行方法的 ClassName 的實例)。

Function接受一個參數(shù)并返回一個值。

因此,您可以為其分配特定實例的方法引用和單個參數(shù)方法(如 中super::equals)或任意實例的方法引用和 0 參數(shù)方法(如中Object::hashCode)。

但是,您不能為它分配任意實例的方法引用和單個參數(shù)方法(如 中Object::equals),因為這需要兩個參數(shù),并且Function只需要一個參數(shù)。

由于需要兩個參數(shù),因此您可以將此方法引用分配給 a BiFunction

BiFunction<Object,Object,Boolean> bifunc = Object::equals;

同樣,您不能為其分配特定實例的方法引用和 0 參數(shù)方法(如 中super::hashCode),因為這需要 0 個參數(shù),并且Function需要一個。

由于需要 0 個參數(shù),因此您可以將此方法引用分配給 a Supplier

Supplier<Integer> sup = super::hashCode;


查看完整回答
反對 回復(fù) 2022-06-30
?
三國紛爭

TA貢獻1804條經(jīng)驗 獲得超7個贊

hashCode 不是函數(shù)。它是一個供應(yīng)商。

Supplier fun2 = super::hashCode;


查看完整回答
反對 回復(fù) 2022-06-30
  • 4 回答
  • 0 關(guān)注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號