有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    首先,如果不在类级别或方法级别声明泛型类型,就不能在方法/构造函数定义中使用泛型类型

    CouchbaseDAO构造函数中,使用泛型类型<K><T>。为了做到这一点,您应该使用这两种类型声明类CouchbaseDAO。如果您没有这样做,那么在构造函数中声明它,如

    public <K, T> CouchbaseDAO(...) {...}

    如果您只是想接受任何类型,那么您可以跳过泛型类型并使用通配符字符?

    因此,要将Class类型传递给构造函数,您的定义应该是Class<?>而不是Class<T>

    这同样适用于CouchbaseKeyProvider<K>