問題タブ [unbounded-wildcard]
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.
java - API 呼び出しで複数のワイルドカードを使用する方法
私は Anthill (UrbanCode/IBM 製品) を使用しており、メソッドの 1 つに type のパラメーターが必要java.lang.Class<? extends SourceConfig<?>> sourceConfigType
です。
ジェネリックに関するチュートリアルを読んだ後、クラスGitSourceConfig
が のサブクラスであることがわかりましたが、このコンテキストでSourceConfig
ジェネリックがどのように機能するかわかりません。SourceConfig<?>
何か案は?
最終的な目標は、オブジェクトを取得して/メソッドGitSourceConfig
を呼び出すことです。Anthill Pro API はここにあり、クラスを見ています。getRepositoryUrl
setRepositoryUrl
SourceConfig
java - リストから変換できませんリストへ>
- >
生のリストは問題なく変換されList<?>
ます。生のリストのリストを のリストに変換できないのはなぜList<?>
ですか?
バックストーリー( xy問題を軽減するため):
私が使用している API は return を返しますList<JAXBElement>
。私はそれが常にであることをたまたま知っていますList<JAXBElement<String>>
。ループして独自の をビルドする予定List<String>
ですが、 を書くときに未加工の型コンパイラの警告を修正しようとしました (抑制はしません) List<JAXBElement> raw = api();
。
私は試した:
しかし、これらはタイプの不一致エラーを引き起こします。
興味深いことに、これは警告もエラーも発生しません。
java - パラメータ化されたクラスのJavaジェネリック:無制限のワイルドカードと生の型
パラメータ化されたインターフェイス RestHandler があります。
そして、Class.forName を使用して構成からクラスを作成する必要があります。今、すべてが正常にコンパイルされる 3 つのバージョンを考え出しました。
バージョン 1:
バージョン 2:
バージョン 3:
私の質問は、なぜそれらがすべて機能し、どれがベストプラクティスになるのでしょうか?
java - scala からワイルドカード Java 関数を呼び出す方法
いくつかの汎用コンテナを含む Java ライブラリがあります。
それらの具体的なインスタンスを取得するファクトリメソッド
また、ワイルドカード テーブルを型指定するユーティリティ メソッドもあります (値のキャストと変換によって)
(IColumnValues のパラメーターとして ? の代わりに V を使用することに注意してください)
Java では、次のように呼び出して、Double の値を持つテーブルを取得できます。
ただし、Scala では、同じ呼び出しを機能させることができないようです。
結果:
Optional.empty() の代わりに null を使用して試してみたところ、次のようになりました。
実際に関数を渡すことができるように、IColumnValues に指定されたワイルドカードをトラップする補助的な方法も試しました。フィット。
Java ライブラリを一気に変更できますが、Scala と Java は完全に相互運用可能であるため、何かが欠けているに違いないと思います。
javaを変更せずにscalaからgetPureTypedTableを呼び出す方法はありますか? (コンバーター関数が null または空のオプションではない場合)
PS: 金曜日の遅い投稿で長々と申し訳ありませんが、私はこれをしばらく見つめていました。
java - Java - 抽象クラスの子からメソッドを呼び出す
次の抽象クラスがあるとします。
および次の子クラス:
私は呼び出し元のメソッドからこのようなことをしたいと思っています:
どこで、次のようにcreateVersionResponse(...)
なりcreateVersionVO(...)
ます。
VersionVOV1 は次のようになります。
このコード行をコンパイルしようとすると、私の問題が発生します。
でgetVersionInfo(...)
。次のようなメッセージが表示されます。
タイプ BaseVersionResponse のメソッド populate(capture#3-of ?) は、引数 (BaseVO) には適用されません。
上記のpopulate
方法で。
コードのこの時点では、 baseVersionResponse は実際には特定の子インスタンスであるため、クラスはその特定の子クラスからどの populate メソッドを呼び出すかを正確に認識しているというのが私の考えでした (これは明らかに正しくありません)。
ここで何が間違っていますか?これが正しいアプローチでない場合、これを行うためのより良い方法はありますか?
お時間をいただきありがとうございます!
java - null 値しか挿入できない場合、List の目的は何ですか?
リンクで提供される情報に基づいて、次のように述べています。
とは同じ
List<Object>
ではないことに注意することが重要です。List<?>
オブジェクト、またはオブジェクトの任意のサブタイプを に挿入できますList<Object>
。ただし、null は にしか挿入できませんList<?>
。
List<?>
のみnull
挿入できる場合に使用するのは何ですか?
例えば、
methodOne(ArrayList<?> l):
このメソッドArrayList
はどのタイプにも使用できますが、メソッド内では 以外は List に追加できませんnull
。
java - Java では、通常のジェネリックではできないワイルドカードでできることは何ですか?
私はJavaが初めてです。この ドキュメントでは、ワイルドカードを使用するユースケースとしてこれを示しています。
これが彼らの解決策です:
しかし、ワイルドカードなしで同じことができます:
通常のジェネリックは機能しないが、ワイルドカードは機能する簡単なユースケースを誰かに教えてもらえますか?
更新: ここの回答Java Generics でいつワイルドカードを使用するのですか? ワイルドカードの必要性を教えないでください。実際にはその逆です。
scala - バインドされていないワイルドカード タイプ
を取得したとき、私は Scala REPL で遊んでいましたerror: unbound wildcard type
。私はこの(役に立たない)関数を宣言しようとしました:
このエラーが発生するのはなぜですか?
名前付き型変数を導入せずにこの関数を宣言することは可能ですか? もしそうなら、どのように?