php エディター Xigua による Java Q&A コラムこの号では、IntelliJ Java のマッピング ストリームの一般的な型推論について説明します。開発プロセス中にユニバーサル型推論を合理的に使用すると、コード作成効率が向上し、冗長なコードが削減されます。この記事の説明と例を通じて、読者は IntelliJ Java のマッピング フローをよりよく理解して適用し、プログラミング スキルをさらに向上させることができます。
次のクラスを想像してください:
リーリーなぜ intellij がマッピングフェーズ後にストリームのタイプを推測できず、エラーを表示するのか不思議です。
以下に示すように、マップ段階で型を明示的に追加すると、正常に動作します。
リーリーコンパイルではエラーがないのに、intellij ではエラーが表示されるのはなぜですか?カーソルを合わせると、次のエラーが表示されます:
public class test { private static list<model<?>> getmodels() { return list.of(10).stream() .map(test::getmodel) .tolist(); } private static model<?> getmodel(int key) { return new model<>(key); } public static void main(string... str) { system.out.println("hello world!" + getmodels()); } public static class model<t> { private t field; model(t key) { field = key; } public string tostring() { return "model(" + field + ")"; } } }
intellij コンパイラは、マップ メソッドのより一般的な戻り値の型 (## であるべきところを、stream<? extends model<?>>
) を誤って推論しました。 #ストリーム<モデル>>)。 Java コンパイラは引き続きコードを正しいものとして受け入れますが、IDE の警告が煩わしい場合は、明示的な型引数を指定するだけで警告を抑制できます。
リーリー
以上がIntelliJ Java マッピング ストリームの汎用型推論の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。