は、Java 6では私が使用することができましたJava7では失敗しましたが、Java7でエラーが発生しました(エラーがシンボルを見つけることができません - クラスObjectでfindAll()が検索されるため)コンパイラの変更は7
List<User> users = getCountrySpecificComponent(uk, us).findAll();
これは、私は、これはかなり珍しいユースケースであるが、この変化の理由があると知っている
List<User> users = ((Repository)getCountrySpecificComponent(uk, us)).findAll();
のJava 7でコンパイル?コンパイラにちょっと "賢い"と言ってもいいでしょうか?
「T」型の目的は何ですか?ジェネリックパラメータを取り除き、 '英国 'と'米国 'が'リポジトリ 'を拡張することができますか?私はそれが問題の根本だと考えています。コンパイラは、あなたが指示しない限り、 'getCountrySpecificComponent()'に渡すものがすべて 'リポジトリ'であることを知ることはできません。 –
良い質問!私はあらゆる種類のレポジトリ、サービス、その他の国固有のものに使用したいと思っています。私はそれをより汎用的/有用にしようとしています。 – skytteren
危険な仮定がなされていない限り、Java 6でもこれがどのようにコンパイルされるのか分かりません...与えられた場合に 'Object'と同じように' T'をリポジトリにするのはなぜですか? – mellamokb