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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

無(wú)法從 Java 調(diào)用 Kotlin 的擴(kuò)展屬性

無(wú)法從 Java 調(diào)用 Kotlin 的擴(kuò)展屬性

POPMUISE 2023-03-31 09:51:50
安卓工作室 3.4這是我的科特林課程:open class DefaultRestClientCallback<T> : Callback<T> {    val Response<*>.errorResponse: ErrorResponse        get() = ErrorUtils.parseError(this)    override fun onResponse(call: Call<T>, response: Response<T>) {正如你在這里看到的,我有屬性擴(kuò)展:errorResponse在另一個(gè) Kotlin 類(lèi) (Test.kt) 中,我這樣稱(chēng)呼它:class Test {    fun test() {        TransportService.login("email",            "pass", object : DefaultRestClientCallback<JsonElement>() {                override fun onTangoResponse(response: Response<*>) {                    val isSuccessful = response.isSuccessful                    if (isSuccessful) { // code >= 200 && code < 300;                    } else {                        val errorResponse = response.errorResponse                    }                }            })    }}很好,它工作正?!,F(xiàn)在我需要從 java 文件調(diào)用擴(kuò)展屬性(我現(xiàn)在無(wú)法將其轉(zhuǎn)換為 Kotlin)。我試試這個(gè):TransportService.login("email", "pass", new DefaultRestClientCallback<JsonElement>() {    @Override    public void onTangoResponse(@NotNull Response<?> response) {        boolean isSuccessful = response.isSuccessful();        if (isSuccessful) { // code >= 200 && code < 300;        } else {            ErrorResponse errorResponse = response.errorResponse();        }    }});}但是我在這一行中遇到編譯錯(cuò)誤: ErrorResponse errorResponse = response.errorResponse();錯(cuò)誤:Cannot resolve method 'errorResponse()'
查看完整描述

2 回答

?
浮云間

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊

Kotlin 將擴(kuò)展屬性編譯成靜態(tài)方法。String這是一個(gè)在名為 的文件中擴(kuò)展類(lèi)的示例StringUtils.kt:


val String.greeting

  get() = "hello $this"

所以一個(gè)非常簡(jiǎn)單的方法,當(dāng)在 kotlin 中調(diào)用時(shí)"fred".greeting會(huì)返回hello fred。


如果檢查 kotlin 字節(jié)碼并在 IDE 中對(duì)其進(jìn)行反編譯,可以看到結(jié)果類(lèi)似于:


public final class StringUtilsKt {

 @NotNull

 public static final String getGreeting(@NotNull String $this$greeting) {

  Intrinsics.checkParameterIsNotNull($this$greeting, "$this$greeting");

  return "hello " + $this$greeting;

 }

}

類(lèi)中的靜態(tài)方法StringUtilsKt。這意味著您可以簡(jiǎn)單地從 java 中調(diào)用它StringUtilsKt.getGreeting("fred"),它會(huì)產(chǎn)生相同的輸出。


PS:這與擴(kuò)展功能非常相似。它們也被編譯成靜態(tài)方法,但名稱(chēng)通常不會(huì)改變。


查看完整回答
反對(duì) 回復(fù) 2023-03-31
?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

在反編譯 Kotlin 的字節(jié)碼后,我得到了這個(gè):


   @NotNull

   public final ErrorResponse getErrorResponse(@NotNull Response $this$errorResponse) {

      Intrinsics.checkParameterIsNotNull($this$errorResponse, "$this$errorResponse");

      ErrorResponse var10000 = ErrorUtils.parseError($this$errorResponse);

      Intrinsics.checkExpressionValueIsNotNull(var10000, "ErrorUtils.parseError(this)");

      return var10000;

   }

所以從 Java 我可以這樣調(diào)用:


@Override

    public void onTangoResponse(@NotNull Response<?> response) {

        boolean isSuccessful = response.isSuccessful();

        if (isSuccessful) { // code >= 200 && code < 300;

        } else {

            ErrorResponse errorResponse = getErrorResponse(response);

        }

}


查看完整回答
反對(duì) 回復(fù) 2023-03-31
  • 2 回答
  • 0 關(guān)注
  • 234 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號(hào)

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