我有一个CacheListener<T>
和实现CacheListener<Activity>
一个CacheListenerLoader
。Java的泛型通用工厂没有编制
我然后有一个Provider<CacheListenerLoader>
吉斯所以类型必须是CacheListenerLoader所以谷歌产生正确的。
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)
然后通过Provider和类的类型,这样我的正确组合m在编译时保证类类型查找的结果是可以处理给定类的东西。
我Activity.class和温度传递给我的put方法和工作正常,并检查类型。关键是上面的第四行不起作用,这看起来像泛型在这里失败了,但我不知道为什么,因为它是编译时的事情。
“OurCacheListener”类型适合在哪里?你只要提到`CacheListener`并且`CacheListenerLoader`实现`CacheListener`。 – ColinD 2011-02-02 16:16:36