java如何获取Map类型的类
我必须在new CouchbaseDAO<>(cbClientProvider, new CountryConfigKeyProvider(), class);
行中传递类类型Map<String, CountryConfig>
,以代替第三个参数中的类。但它并没有接受,我已经像HashMap一样尝试了。阶级
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);
}
# 1 楼答案
首先,如果不在类级别或方法级别声明泛型类型,就不能在方法/构造函数定义中使用泛型类型
在
CouchbaseDAO
构造函数中,使用泛型类型<K>
和<T>
。为了做到这一点,您应该使用这两种类型声明类CouchbaseDAO
。如果您没有这样做,那么在构造函数中声明它,如public <K, T> CouchbaseDAO(...) {...}
如果您只是想接受任何类型,那么您可以跳过泛型类型并使用通配符字符
?
因此,要将
Class
类型传递给构造函数,您的定义应该是Class<?>
和而不是Class<T>
这同样适用于
CouchbaseKeyProvider<K>