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

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

Java:將類名傳遞給函數(shù)

Java:將類名傳遞給函數(shù)

瀟湘沐 2021-11-24 19:10:43
我有三個非常相似的功能,想要重構(gòu)。但是,函數(shù)使用類中的函數(shù),因此,我想知道是否有辦法將類/類名傳遞給函數(shù)?new GenericClass1 = genericClass1;new GenericClass2 = genericClass2;new GenericClass3 = genericClass3;public ReturnsClass1 myFunction1 (){    return genericClass1.functionFromClass(paramter);}public ReturnsClass2 myFunction2 (){    return genericClass2.functionFromClass(paramter);}public ReturnsClass3 myFunction3 (){    return genericClass3.functionFromClass(paramter);}為了說明我想要這樣的東西:public ReturnsClass myFunction (classInstance) {    return classInstance.functionFromClass(parameter);}
查看完整描述

2 回答

?
慕的地8271018

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

您可以GenericClass*實現(xiàn)一個通用的泛型接口,其中該方法返回泛型類型參數(shù)的實例。


interface GenericInterface<T> {

    T functionName(Object parameter); //change parameter type

}

然后可以通過GenericClass*以下方式擴展:


class GenericClass1 implements GenericInterface<ReturnsClass1> {

    public ReturnsClass1 functionName(Object parameter) {

        ...

    }

}

以同樣的方式,GenericClass2將實施GenericInterface<ReturnsClass2>和GenericClass3將實施GenericInterface<ReturnsClass3>。


您的方法將如下所示:


public <T> T myFunction (GenericInterface<T> classInstance) {

    return classInstance.functionName(parameter);

}


查看完整回答
反對 回復 2021-11-24
?
qq_遁去的一_1

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

您可以嘗試使用java.util.function.Function<T, R>.


它可能看起來像這樣:


public <R> R myFunction (Function<Object, R> func) {

    return func.apply(parameter);

}

用法:


ReturnClass1 rc1 = myFunction(genericClass1::functionFromClass);

ReturnClass2 rc2 = myFunction(genericClass2::functionFromClass);

這種方法的優(yōu)點是你不需要你的泛型類來共享一個接口,所有的重構(gòu)都進入myFunction. 此接口是 Java 8 中引入的功能接口,您可以在 docs 中閱讀有關它的更多信息。簡單地說,它定義了一個函數(shù),該函數(shù)接受一個 type 類型的參數(shù)T并返回一個 type 值R。


奇怪的::是一個方法參考


查看完整回答
反對 回復 2021-11-24
  • 2 回答
  • 0 關注
  • 300 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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