競合するオーバーロード:パブリックコンストラクターApiSuccessResponse <T>(body:T)

gamofe

私は、Androidアーキテクチャコンポーネントを実装するサンプルのリポジトリからGoogleのコードをコピーし、コードをベースとして使用して、私が考えているアプリのニーズにゆっくりと適応しています。すでにエラーが表示されている部分に到達していて、その理由がわかりません。これはコードブロックです:

data class ApiSuccessResponse<T>(val responseBody: T) : ApiResponse<T>() {
    constructor(body: T) : this (responseBody = body)
}

根本的なエラーメッセージは

競合するオーバーロード:com.example.rxe.api.ApiSuccessResponseで定義されたパブリックコンストラクターApiSuccessResponse(body:T)、com.example.rxe.api.ApiSuccessResponseで定義されたパブリックコンストラクターApiSuccessResponse(responseBody:T)

ApiSuccessResponseサンプルコードのように、ここで私が呼び出します。

sealed class ApiResponse<T> {
    companion object {
        fun <T> create(response: Response<T>): ApiResponse<T> {
            return if (response.isSuccessful) {
                val responseBody = response.body()

                if (responseBody == null || response.code() == 204) {
                    ApiEmptyResponse()
                } else {
                    ApiSuccessResponse(body = responseBody)
                }
            } else {
                val error = response.errorBody()?.string()
                val message = if (error.isNullOrEmpty()) {
                    response.message()
                } else {
                    error
                }

                ApiErrorResponse(errorMessage = message ?: "Unknown error")
            }
        }
    }
}

サンプルが作成されてから、何かが変更された可能性があります。しかし、変数の名前をのではbodyなくに変更するresponseBodyと、同じエラーでクラスの呼び出しに下線が引かれますApiSuccessResponse

パウエル

Kotlinでコンストラクターがどのように機能するかを理解していないようですこれはあなたがコピーしようとしたコードです:

data class ApiSuccessResponse<T>(
    val body: T,
    val links: Map<String, String>
) : ApiResponse<T>() {
    constructor(body: T, linkHeader: String?) : this(
        body = body,
        links = linkHeader?.extractLinks() ?: emptyMap()
    )
    //.... rest of body
}

2つのコンストラクターがあります。

  1. プライマリコンストラクタ: ApiSuccessResponse(body: T, links: Map<String, String>)
  2. 二次コンストラクター:(ApiSuccessResponse(body: T, linkHeader: String?)リンクのマップを抽出しString、それlinksを一次コンストラクターに渡します)。

あなたが持っているものは:

  1. プライマリコンストラクタ: ApiSuccessResponse(resposebody: T)
  2. 二次コンストラクター:(ApiSuccessResponse(body: T)一次コンストラクターを1:1で呼び出そうとしますが、同じ署名のために衝突するだけです)

二次コンストラクターが必要ない場合は、完全に削除する必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

トラックポイントとクリックパッド:ボタンとスクロールを有効にする(Lenovo T440s)

分類Dev

T = int&の場合、コンストラクターMessage(const T&data)がMessage(T && data)と競合するのはなぜですか?

分類Dev

Tは、ジェネリック型またはメソッドでパラメーター 'TModel'として使用するために、パブリックパラメーターなしコンストラクターを持つ非抽象型である必要があります

分類Dev

タイプ<T1>のオブジェクトからタイプ<T>のオブジェクトを作成するコンストラクター

分類Dev

オーバーヘッドのあるT-SQLクエリをリファクタリングする

分類Dev

1セッターメソッドを持つ抽象クラスがあります-パラメーターはオブジェクトです。それを拡張するクラスの型をとるジェネリック<T>パラメータが欲しい

分類Dev

ジェネリックリスト<T>問題による関数のオーバーロード

分類Dev

メソッドのオーバーロード時に「ジェネリックパラメータ 'T'を推測できませんでした」エラー

分類Dev

ジェネリックコンストラクターはタイプTのクラスオブジェクトを受け取り、Tを返します。今回はTはリストです。

分類Dev

ユニバーサルリファレンスのパラメータ「T」の競合するタイプを推定

分類Dev

const T&をパラメーターとして使用するコピーコンストラクターをコンパイラーに選択させる

分類Dev

パラメーター化されたList <T>からジェネリック型Tの新しいオブジェクトを作成する方法

分類Dev

List<T> パラメータを持つコンストラクタでクラスを解決する方法は?

分類Dev

トラバースやスタックオーバーフローなしでTraversable [T]をStream [T]に変換します

分類Dev

Javaジェネリックス-set <T>を返す関数をオーバーライドする

分類Dev

C#ジェネリックメソッドTクラスTオーバーライド

分類Dev

NinjectがLazy <T>オブジェクトを注入するときに呼び出されるLazy <T>コンストラクターとは何ですか?

分類Dev

NinjectがLazy <T>オブジェクトを注入するときに呼び出されるLazy <T>コンストラクターとは何ですか?

分類Dev

Coq型コンストラクターvar(t:T)を理解する方法

分類Dev

C#Linqによってリストボックスデータソース(List <T>でバインドされている)でオブジェクトのインデックスを見つける方法

分類Dev

T = 1のスマートカードのブロックチェーンに返信する

分類Dev

コンストラクターでTを使用してジェネリックコンポーネントを作成する

分類Dev

多重ディスパッチスウィフトの試行:汎用パラメーター「T」に対する競合する引数(「猫」と「犬」)

分類Dev

多重ディスパッチスウィフトの試行:汎用パラメーター「T」に対する競合する引数(「猫」と「犬」)

分類Dev

解決しようとすると、「タイプのコレクションでメソッドの並べ替え(リスト<T>、コンパレータ<?スーパーTは>)の引数には適用されません」

分類Dev

動的Linqおよびジェネリックオブジェクト-タイプTのパブリックメンバー 'Select'が見つかりません

分類Dev

C ++-enable_if_tによってパラメーターパック(可変個引数テンプレート)コンストラクターを推定し、コンストラクターをコピーします

分類Dev

テストオブジェクトのグローバルインポートを使用して、TestCafeの `t.testRun`データにアクセスします

分類Dev

「パブリックインターフェイスMyInterface <T extends MyInterface <T >> {...}」の意味

Related 関連記事

  1. 1

    トラックポイントとクリックパッド:ボタンとスクロールを有効にする(Lenovo T440s)

  2. 2

    T = int&の場合、コンストラクターMessage(const T&data)がMessage(T && data)と競合するのはなぜですか?

  3. 3

    Tは、ジェネリック型またはメソッドでパラメーター 'TModel'として使用するために、パブリックパラメーターなしコンストラクターを持つ非抽象型である必要があります

  4. 4

    タイプ<T1>のオブジェクトからタイプ<T>のオブジェクトを作成するコンストラクター

  5. 5

    オーバーヘッドのあるT-SQLクエリをリファクタリングする

  6. 6

    1セッターメソッドを持つ抽象クラスがあります-パラメーターはオブジェクトです。それを拡張するクラスの型をとるジェネリック<T>パラメータが欲しい

  7. 7

    ジェネリックリスト<T>問題による関数のオーバーロード

  8. 8

    メソッドのオーバーロード時に「ジェネリックパラメータ 'T'を推測できませんでした」エラー

  9. 9

    ジェネリックコンストラクターはタイプTのクラスオブジェクトを受け取り、Tを返します。今回はTはリストです。

  10. 10

    ユニバーサルリファレンスのパラメータ「T」の競合するタイプを推定

  11. 11

    const T&をパラメーターとして使用するコピーコンストラクターをコンパイラーに選択させる

  12. 12

    パラメーター化されたList <T>からジェネリック型Tの新しいオブジェクトを作成する方法

  13. 13

    List<T> パラメータを持つコンストラクタでクラスを解決する方法は?

  14. 14

    トラバースやスタックオーバーフローなしでTraversable [T]をStream [T]に変換します

  15. 15

    Javaジェネリックス-set <T>を返す関数をオーバーライドする

  16. 16

    C#ジェネリックメソッドTクラスTオーバーライド

  17. 17

    NinjectがLazy <T>オブジェクトを注入するときに呼び出されるLazy <T>コンストラクターとは何ですか?

  18. 18

    NinjectがLazy <T>オブジェクトを注入するときに呼び出されるLazy <T>コンストラクターとは何ですか?

  19. 19

    Coq型コンストラクターvar(t:T)を理解する方法

  20. 20

    C#Linqによってリストボックスデータソース(List <T>でバインドされている)でオブジェクトのインデックスを見つける方法

  21. 21

    T = 1のスマートカードのブロックチェーンに返信する

  22. 22

    コンストラクターでTを使用してジェネリックコンポーネントを作成する

  23. 23

    多重ディスパッチスウィフトの試行:汎用パラメーター「T」に対する競合する引数(「猫」と「犬」)

  24. 24

    多重ディスパッチスウィフトの試行:汎用パラメーター「T」に対する競合する引数(「猫」と「犬」)

  25. 25

    解決しようとすると、「タイプのコレクションでメソッドの並べ替え(リスト<T>、コンパレータ<?スーパーTは>)の引数には適用されません」

  26. 26

    動的Linqおよびジェネリックオブジェクト-タイプTのパブリックメンバー 'Select'が見つかりません

  27. 27

    C ++-enable_if_tによってパラメーターパック(可変個引数テンプレート)コンストラクターを推定し、コンストラクターをコピーします

  28. 28

    テストオブジェクトのグローバルインポートを使用して、TestCafeの `t.testRun`データにアクセスします

  29. 29

    「パブリックインターフェイスMyInterface <T extends MyInterface <T >> {...}」の意味

ホットタグ

アーカイブ