虽然我在这里使用 Hamcrest 库,但它可能不是 Hamcrest 问题而是纯 Java ...
我有以下方法:
public static void isGreaterThan(int valueToValidate, int minExpectedVal) { MatcherAssert.assertThat(valueToValidate, greaterThan(minExpectedVal)); }
我想将其概括为:
public static <T> void isGreaterThan(T valueToValidate, T minExpectedVal) { MatcherAssert.assertThat(valueToValidate, greaterThan(minExpectedVal)); }
或者
public static void isGreaterThan(Number valueToValidate, Number minExpectedVal) { MatcherAssert.assertThat(valueToValidate, greaterThan(minExpectedVal)); }
Hamcrest 大于签名是:
<T extends Comparable<T>> Matcher<T> greaterThan(T value)
和 assertThat 签名:
<T> void assertThat(T actual, Matcher<? super T> matcher)
但是,在这两种情况下,我都在 minExpectedVal 上收到错误消息,说它不能作为 T 应用。
我怎样才能克服这个?
拉莫斯之舞
相关分类