- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我遇到了以下问题:
我有这些类和接口(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/
2019-07-04:更新 结束使用 options: env: 不完美,因为在构建步骤中不允许变量,但至少涵盖了环境。 问题 GCP Cloud build不替换 substitutions
我正在使用 NSubstitute。我必须伪造一个类,无法挖掘出 Substitute.For() 的区别和 Substitute.ForPartsOf .我已经阅读了文档,但不明白两者的行为不同。
我正在尝试在 Agda 中使用等递归类型对按推值调用 lambda 演算进行编码。所以我用最多n个自由值类型变量相互定义值类型和计算类型(我只需要用值类型代替等递归类型)如下(这只是一个片段)。 da
有没有办法用s///同时进行替换?例如,如果我有一个带有1、2、3等数字的字符串,并且我想用“tom”代替1,用“mary”代替2,用“jane”代替3,等等? my $a = "1323131323
我有一个使用模板的 Jav::String 类。 class String { String(); String(std::size_t); template String(co
考虑以下 C99 结构,以灵活的数组成员结尾: struct hdr { size_t len; size_t free; char buf[]; }; 例如, len 可以通过这样
我有一个范围,包含数值和空白单元格。一些数值将以 * 作为后缀。 10* 5 7 9 25* 10 当我执行 SUM(A1:A8) 时,我得到 5+7+9+10 = 31 的结果,即所需的输出。
有没有办法一次交换多个字符串实例而不嵌套? 例如,假设我想从字符串中删除以下值的所有实例: 目标 沃尔玛 简历 输入字符串: “我去了 Target 而不是沃尔玛,但我真的很想去 CVS” 输出字符串
我在 Vim 的 substitute 中遇到了一个行为。 - 我不能的命令 真正遵循: 给定以下包含 && 的代码行我想要的序列 替换 &&与 &&和换行符: return a && b 在我的第一
为了说明我的问题,请使用以下简单示例。 我希望能够将“替换”和“那个”之间的任何文本替换为“完成”。例如,以下两个字符串: blah blah blah replace this and that b
我之前问过一个关于How to take in text/character argument without quotes的问题.在我在那个问题中提供的场景中,参数的数量是固定的,所以我在函数定义中
我正在尝试将一些 Selenium HTML 测试转换为使用 WebDriver 2.0 框架。根据网站 (http://seleniumhq.org/docs/03_webdriver.html),
那应该很容易...如何在下图中的标题中以粗体显示 i (=1)(仅调整参数 main)? i <- 1 plot(0~0, main=substitute(bold("foo"~i.~"bar"),
那应该很容易...如何在下图中的标题中以粗体显示 i (=1)(仅调整参数 main)? i <- 1 plot(0~0, main=substitute(bold("foo"~i.~"bar"),
这是一个现有的通用 css 规则(原始文件): .caption-top { color: red; } 这是示意图,因为在现实生活中,我需要根据上下文将 .caption-top 选择器变成其他
这是我的代码: $(".tooltip").live('click', function() { var texte = $('#tiptip_content').text(); $(
我需要帮助将变量子化为正则表达式 这条线工作正常: subject = subject.replace(//g, emoticons[1]); 我需要为变量切换单词“Smile”。 我尝试了一些不同的
我读了一篇摘要,其中在谈到继承时总是使用“替代原则”的定义。但并没有解释这个原理的含义。 这个原理是什么? 谢谢。 最佳答案 意思很简单:子类必须遵守父类(super class)设定的契约。 如果你
我有一个变量,它是一个 url,我想在 bash 中替换该 url 的一部分,但我一直收到“错误的替换” URL="http://hostname/project/branches/Old_Branc
#!/bin/bash jobname="job_201312161447_0003" jobname_pre=${jobname:0:16} jobname_post=${jobname:17} 这
我是一名优秀的程序员,十分优秀!