当前位置: 首页 > 知识库问答 >
问题:

JMock with(instanceOf(Integer.Class))在Java 8中无法编译

吕高雅
2023-03-14
The method with(Matcher<Object>) is ambiguous for the type new Expectations(){}

它是由以下方法调用引起的:

import org.jmock.Expectations;

public class Ambiguous {
    public static void main(String[] args) {
        Expectations expectations = new Expectations();
        expectations.with(org.hamcrest.Matchers.instanceOf(Integer.class));
    }
}

似乎with是从返回的instanceOf()with()期望的内容不明确,反之亦然。有办法解决吗?

共有1个答案

汪深
2023-03-14

有一些简单的方法可以帮助编译器。

将匹配器分配给局部变量:

public static void main(String[] args) {
    Expectations expectations = new Expectations();
    Matcher<Integer> instanceOf = Matchers.instanceOf(Integer.class);
    expectations.with(instanceOf);
}

可以使用类型见证符指定类型参数,如下所示:

public static void main(String[] args) {
    Expectations expectations = new Expectations();
    expectations.with(Matchers.<Integer>instanceOf(Integer.class));
}
public static void main(String[] args) {
    Expectations expectations = new Expectations();
    expectations.with(instanceOf(Integer.class));
}

public static <T> Matcher<T> instanceOf(Class<T> type) {
    return Matchers.instanceOf(type);
}
 类似资料:
  • 我想在node.js Web服务器中使用typescript。但是,Web服务器位于Docker容器中。我使用Dockerfile,就像使用blow: 在构建Docker之后,我发现在CMD命令之后不会生成webApp.js。为什么,我应该如何解决?谢谢

  • 我试图将文本解析为持续时间,如下所示: 但是我得到以下错误, 有人能告诉我我的问题在哪里吗?

  • 由于编译器使用类型擦除,因此运行时不跟踪类型参数,因此在运行时无法使用instanceOf运算符验证Box 和Box 之间的差异。 Box<Integer> integerBox = new Box<Integer>(); //Compiler Error: //Cannot perform instanceof check against //parameterized type Box<In

  • MDN描述: instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。 即检测构造函数的原型是否存在于参数的原型链上。 例如: 因为 Object.getPrototypeOf(o) === C.prototype //true 但是我使用字面量格式缺出现了问题 能解释下为什么 a 不是一个 Number 构造函数的实例么?

  • 问题内容: 我有以下(也许是常见的)问题,此刻绝对使我感到困惑: 有几个生成的事件对象扩展了抽象类,我想将它们划分为Session Bean,例如 但是将来可能会有两种以上的事件类型,因此if- else将会很长,甚至可能无法读取。另外,在这种情况下,我认为这并不是真正的“最佳实践”。 我可以在类型中添加一个抽象方法,并让它们自行划分,但随后我必须在每个实体中注入特定的Session Bean。

  • 问题内容: 具有“ instanceof”操作链被认为是“代码异味”。标准答案是“使用多态性”。在这种情况下我该怎么办? 基类有许多子类。他们都不在我的控制之下。类似的情况是Java类Integer,Double,BigDecimal等。 我确实可以控制等。 我不想使用几行代码就能完成的代码。(有时,我制作了一个HashMap将映射到的实例,将映射到的实例,等等。但是今天我想要一些更简单的方法。)