gpt4 book ai didi

Java 泛型 : Bound mismatch: The type is not a valid substitute for the bounded parameter of the type

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:20:43 28 4
gpt4 key购买 nike

我遇到了以下问题:

我有这些类和接口(interface)定义

public abstract class ViewModelRefreshPostListFragment<T extends IRefreshPostViewCallback, R extends RefreshPostViewModel<T>>
extends RefreshPostListFragment implements IRefreshPostView {

private final ViewModelHelper<T, R> mViewModeHelper = //error here
new ViewModelHelper<>();

...
}

public abstract class RefreshPostViewModel<R1 extends IRefreshPostViewCallback> extends AbstractViewModel<IRefreshPostViewCallback> {}

public class ViewModelHelper<T extends IView, R extends AbstractViewModel<T>> {}

public abstract class AbstractViewModel<T extends IView> {}

public interface IRefreshPostViewCallback extends IView {}

Eclipse 仍然给我这个错误:绑定(bind)不匹配:类型 R不是有界参数的有效替代 <R extends AbstractViewModel<T>>类型 ViewModelHelper<T,R>

基于 Java 继承,我创建了这两个链:

来自 ViewModelRefreshPostListFragment 的“链”类定义
1) R extends RefreshPostViewModel<T> -> R extends RefreshPostViewModel<R1 extends IRefreshPostViewCallback> -> R extends AbstractViewModel<IRefreshPostViewCallback>
1.1) T extends IRefreshPostViewCallback
1.2) T (来自 RefreshPostViewModel<T> )替换为 <R1 extends IRefreshPostViewCallback>1.1) 和 1.2) 的结果一致,因此 T 参数应该没问题。

来自 ViewModelHelper 类定义的“链”
2) R extends AbstractViewModel<T>
2.1) T extends IView , IRefreshPostViewCallback extends IView -> T可以替换为IRefreshPostViewCallback

如果我在 1.1) && 1.2) 上应用 2.1) 我们看到,参数 T 是一致的

从 1) 开始遵循 R extends AbstractViewModel<IRefreshPostViewCallback>来自 2) 如下 R extends AbstractViewModel<T>从 2.1) 开始遵循 T可以替换为IRefreshPostViewCallback ,如果我理解正确的话,应该不会出现这个错误,有人可以解释一下,为什么 eclipse 给我错误??

谢谢!

最佳答案

错误信息来自于 R不在其范围内。

你的 ViewModelHelper类扩展 AbstractViewModel<IRefreshPostViewCallback> ,不管怎样R1真的是。

在类里面ViewModelHelper ,更改 extends 中的类型参数AbstractViewModel的条款至 R1 , 而不是 IRefreshPostViewCallback .

public abstract class RefreshPostViewModel<R1 extends IRefreshPostViewCallback>
extends AbstractViewModel<R1>

这将消除错误。

这将通过适当的 T沿着ViewModelHelper .而不是 R正在RefreshPostViewModel<IRefreshPostViewCallback> ,您将使用 RefreshPostViewModel<T> , 满足界限。

关于Java 泛型 : Bound mismatch: The type is not a valid substitute for the bounded parameter of the type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30655288/

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