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/

10-10 11:07