問題タブ [generic-method]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
44 参照

c# - 一般的な方法: インターフェイスとの制約、プロパティへのアクセス方法

インターフェイスによって制約されているジェネリック メソッド内で新しく作成されたオブジェクトのプロパティにアクセスしたい:

コンパイラは "T" が MyInterface 型であることを認識しているため、そのインターフェイスのプロパティにアクセスできるはずです。

しかし、次のように書かれています:Tには「名前」の定義がありません

ここでインターフェイスを制約として使用できる場合: プロパティにアクセスできないのはなぜですか?

0 投票する
1 に答える
2311 参照

java - バインドされたこのジェネリック メソッドが任意の型を返すことができるのはなぜですか?

次のコードがコンパイルされるのはなぜですか? このメソッドは、型またはそのサブクラスIElement.getX(String)のインスタンスを返します。IElementクラス内のコードがメソッドをMain呼び出しますgetX(String)。コンパイラは、戻り値を型の変数に格納することを許可しますInteger(これは明らかに の階層にはありませんIElement)。

IElement型の消去後でも、戻り値の型はインスタンスのままであるべきではありませんか?

getX(String)メソッドのバイトコードは次のとおりです。

編集:String一貫してに置き換えられましたInteger

0 投票する
1 に答える
109 参照

java - インターフェイスを実装するために両方とも必要なパラメーターとして別のジェネリック型を持ちながら、ジェネリック型を返すにはどうすればよいですか?

はいはい、タイトルはちょっと紛らわしいです。しかし、これは私が達成したいことです:

タイプ C の要素を含むリストを返したい。また、メソッドがタイプ R の変数を受け取るようにしたい。また、C はインターフェイス、つまり C_interface を実装するクラスでなければならず、R は別のインターフェイスを実装するクラスでなければならない。 、すなわち R_interface.

私の世界では、このメソッドヘッドは機能するはずです:

しかし、そうではありません。Eclipse で次のエラーが発生します。

次のように、implements インターフェイス部分を削除すると:

すべて正常に動作します。そして、メソッド内の型を確認するだけでよいと思います。しかし、最初の方法でそれが可能であれば、それははるかに良いでしょう.

0 投票する
1 に答える
187 参照

java - インターフェイスを持つジェネリックメソッドの境界型パラメーター?

したがって、同じメソッドの 2 つのバージョンがあります。

バージョン 1:

バージョン 2:

> 演算子はプリミティブを比較する場合にのみ使用できるため、 Eclipse はバージョン 1について文句を言います。これは私には理にかなっています。

したがって、この問題を解決するには、Comparable インターフェースによって境界付けられた型パラメーターを使用するようにインターネットから指示されます。ここから、何が起こっているのか分からなくなり始めます...

インターフェイスに関する私の基本的な理解から、インターフェイスを実装するクラスは、インターフェイスで宣言された各メソッドのメソッド本体を提供する必要があります。

では、なぜバージョン 2はこのように見える必要がないのでしょうか?

^これは正しい構文ではないと思いますが、この状況で Comparable インターフェースのメソッドのメソッド本体を記述する必要がない理由についての質問を説明するためにこれを行いました。

素人の言葉で説明を続けるようにしてください。私はこのことを独学で学んできたので、簡単な説明は、トピックをさらに調査するときに、トピックのより技術的な側面を理解するのに役立ちます.


混乱してすみません、はっきりさせてください。

Comparable インターフェイスのコードは次のとおりです。

インターフェイスであるため、compareTo() のメソッド本体はありません。countGreaterThan() メソッドでインターフェイスを使用できるように、compareTO() の本体を手動で記述する必要がないのはなぜですか?

インターフェイスが Java Collections Framework の一部であるためですか (それが理由である場合は、それがどのように機能するかを説明してください)

独自のインターフェイスを作成する別の状況を次に示します。

そのインターフェイスをさまざまなクラスに実装するには、ダンス インターフェイスのメソッドのメソッド本体をそれらのクラスに記述する必要があります。

compareTo() のメソッド本体を作成する必要がないのはなぜですか (メソッド本体が compareTo() の Comparable インターフェイスに含まれていないため)。

0 投票する
1 に答える
92 参照

c# - ジェネリック メソッド c# で文字列を逆シリアル化する

NewtonSoftライブラリの関数「JsonConvert.DeserializeObject<>」のように、クラスで特別なエンコードを使用して文字列を逆シリアル化する必要があるため、次のコードを記述しました。

編集 #1: 問題は、このコードが正常に機能しないことです。私の質問に問題はありません。別の言語で説明するのは難しいので、サンプル コードを書きました。その中に問題が表示されるはずです。

0 投票する
1 に答える
248 参照

java - className + オブジェクトをジェネリック メソッドに渡す Java

Android Java では、MyDownloadHelper で JSON データをダウンロードして返す必要があります。これは、異なるクラス/オブジェクト名を持つ 2 つの別々のファイルで機能しています。ただし、これを動的に機能させることはできません。

現在のセットアップではMySQLiteHelper.getRecipients();、別のアクティビティを呼び出すことができ、正しいデータが返されます。また、正しいデータを設定するために 2 つのクラス (Pakbon、Recipient) を使用しています。

これは私の現在のソースです:

}