私はCacheListener<T>
とCacheListenerLoader
を実装しており、CacheListener<Activity>
を実装しています。一般的な工場のJava汎用はコンパイルされていません
私はProvider<CacheListenerLoader>
Guiceを持っているので、タイプはCacheListenerLoaderでなければならないので、Googleは正しいものを生成します。
4行はコンパイルされません:私は、このメソッドを呼び出ししようとしていますので、重要である
CacheListenerLoader listTemp;
OurCacheListener<Activity> t2 = listTemp;
Provider<CacheListenerLoader> prov;
Provider<OurCacheListener<Activity>> temp = prov;
は:
private <T> void put(Class<T> klass, Provider<OurCacheListener<T>> provider)
が、私は「するようにプロバイダとクラス型の正しい組み合わせを渡しますコンパイル時に保証されているクラス型のルックアップは、与えられたクラスを処理できる何かをもたらします。
私はActivity.classとtempをputメソッドに渡します。これはうまく動作し、型をチェックします。キーは、上記の4行目は、ジェネリックスが私にここで失敗しているように見えますが、コンパイル時のものである理由はわかりません。
この 'OurCacheListener'タイプはどこに入りますか?あなたは単に 'CacheListener'を言及し、' CacheListenerLoader'は 'CacheListener'を実装します。 – ColinD