JodaTime有
public final class DateTime extends BaseDateTime {...}
一直到
public interface ReadableInstant extends Comparable<ReadableInstant>
Hamcrest有
public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<? super T>
greaterThan(T value) {...}
如果我尝试
greaterThan(new DateTime());
然后我得到一个编译错误(Eclipse提供了很多线索)
我认为
greaterThan
的签名实际上应该是正确的吗public static <T extends java.lang.Comparable<? super T>> org.hamcrest.Matcher<? super T>
greaterThan(T value)
?有没有一种方法可以将这些组合在一起而无需转换为原始
Comparable
? 最佳答案
是的,在我看来,这将是更好的签名。
您是否尝试过明确指定比较类型?
Matchers.<ReadableInstant>greaterThan(new DateTime());
我不相信您可以使用静态导入并指定类型参数来调用它,但是很不幸-但这可能不会有太多困难。
当然,另一种选择是强制转换参数:
greaterThan((ReadableInstant) new DateTime());
我没有方便的Hamcrest,但是上面使用测试类型使用您给我的签名对我来说很好用。
关于java - 泛型 hell -如何将joda.DateTime传递给Hamcrest Matcher.greaterThan?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7970163/