今、私のコードでは、裸の汎用クラスまたはワイルドカードを使用して問題を解決できることがわかりました。それはジェネリック医薬品なしであったであろうよりも、一般的には間違いなく<?>をJava Genericsで使用する「良い」理由は何ですか?
Class World<T, C> { .... }
私のコードクリーナーを作っている:
は、私はこのようなクラスがデザインを持っています。
しかし、時々私はWorld theWorld;
または時々私は
World<?, ?> theWorld;
で終わる使用し、それはコンパイラが、私の 試みを受け入れる作るために必要なもののようですので、私はこれを行いますそれらが私をより多くのキャスティングまたは継承する複雑さに導くのを避けるために。
それは私には醜いにおいがしますが、それを避けるために導入する必要があるように見える複雑さを正当化できません。
裸であるかワイルドカードで指定されたジェネリックを使用すると、慣れ親しんだJavaと思われるケースは何ですか?
[OK]を私は、私は従わないことを除いては...理にかなっていると思う「それは、コレクションのすべての種類のスーパータイプではないので、あなたは、この目的のためのパラメータの型としてコレクション
コレクション>とCollection <? extends Object>はほぼ同じです。わずかな違いのためこの回答を参照してください。http://stackoverflow.com/a/2016382/122442 –