gpt4 book ai didi

java - 泛型 - 类型中的方法不适用于参数

转载 作者:行者123 更新时间:2023-11-29 04:36:35 24 4
gpt4 key购买 nike

我正在使用一个包含方法的外部库:

public <V> List<V> getObjectsForHashCriteria(@NonNull final Class<V> clazz,     @NonNull final V hashObject) {
final DynamoDBQueryExpression<V> queryExpression = new DynamoDBQueryExpression<V>().withHashKeyValues(hashObject);
return dynamoDBMapper.query(clazz, queryExpression,
dynamoDBMapperConfig);
}

我想调用上面的方法。为了获取类对象,我将其传递给构造函数。像这样:

MyClass(final @NonNull Class<T> clazz){
this.clazz = clazz}

为了调用 getObjectsForHashCriteria(),我目前正在这样做,如下所示,但它显示编译错误:

public <T> List<T> fetchObjectsForHashCriteria(@NonNull final T hashObject){
instance.getObjectsForHashCriteria(clazz, hashObject);
}

但它显示编译错误:

The method getObjectsForHashCriteria(Class,V) is not applicable for the arguments (Class,T).

所以基本上我试图将通用类型参数作为通用类型参数传递。请让我知道这是什么问题?如果这不可能,是否有任何解决方法?

最佳答案

您没有显示完整的类(class) MyClass,但我认为它看起来像这样:

public class MyClass<T> {
private final Class<T> clazz;
// ...

MyClass(final @NonNull Class<T> clazz) {
this.clazz = clazz;
}

public <T> List<T> fetchObjectsForHashCriteria(@NonNull final T hashObject) {
instance.getObjectsForHashCriteria(clazz, hashObject);
}
}

这有什么问题:fetchObjectsForHashCriteria 方法有自己的类型参数 T,它与类 的类型参数 T 是分开的>MyClass,即使它们都被命名为 T

去掉方法上的类型参数T;让它使用类中的 T 代替:

// Note: no <T> type parameter
public List<T> fetchObjectsForHashCriteria(@NonNull final T hashObject) {
instance.getObjectsForHashCriteria(clazz, hashObject);
}

关于java - 泛型 - 类型中的方法不适用于参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41186687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com