我必须在Map<String, CountryConfig>
行中传递new CouchbaseDAO<>(cbClientProvider, new CountryConfigKeyProvider(), class);
的类类型,以代替第三个参数中的类。但是它没有接受,我已经尝试过像Map.class
n HashMap.class
private static CouchbaseDAO<CountryConfigKey, Map<String, CountryConfig>> getCountryConfigDAO(
CouchbaseClientProvider cbClientProvider) {
return new CouchbaseDAO<>(cbClientProvider, new CountryConfigKeyProvider(), Map.class);
}
Couchbase构造函数:
public CouchbaseDAO(CouchbaseClientProvider couchProvider, CouchbaseKeyProvider<K> keyProvider, Class<T> dataClass) {
this(OBJECT_MAPPER, couchProvider, keyProvider, dataClass, RetryableCouchbaseTask.NO_RETRIES);
}
答案 0 :(得分:0)
首先,如果没有在类级别或方法级别上声明泛型,则不能在方法/构造函数定义中使用泛型。
在CouchbaseDAO
构造函数中,您使用的是泛型类型<K>
和<T>
。为此,您应该使用这两种类型声明类CouchbaseDAO
。如果您还没有这样做,请在类似
public <K, T> CouchbaseDAO(...) {...}
如果您只是想接受任何类型,则可以跳过通用类型,而使用通配符字符?
。
因此,要将Class
类型传递给构造函数,您的定义应为Class<?>
,并且不 Class<T>
。
CouchbaseKeyProvider<K>
也是如此。