首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hamcrest JDK7迁移

Hamcrest JDK7迁移
EN

Stack Overflow用户
提问于 2013-12-27 16:31:48
回答 1查看 278关注 0票数 0

嗨,我试图将项目从java 6迁移到java 7 (JDK1.7.0_21)。在一次测试中,我注意到了失败。

更新:我调试了这个问题。我去了ReflectiveTypeFinder.findExpectedType。

代码语言:javascript
复制
public Class<?> findExpectedType(Class<?> fromClass) {
for (Class<?> c = fromClass; c != Object.class; c = c.getSuperclass()) {
    for (Method method : c.getDeclaredMethods()) {
        if (canObtainExpectedTypeFrom(method)) {
            return expectedTypeFrom(method);
        }
    }
}
throw new Error("Cannot determine correct type for " + methodName + "() method.");

}

JDK6和JDK7之间的顺序与c.getDeclaredMethods()不同。我在这两个版本上都进行了动态检查,这两种方法都会通过条件,所以只在乎哪种方法将在列表中第一位。

更新的问题是: hamcrest方法应该检查更多的内容还是扩展CustomTypeSafeMatcher的类编写得很糟糕?

我的MyMatchedObjectMatcher有两个matchesSafely方法:

代码语言:javascript
复制
@Override
protected boolean matchesSafely(MyMatchedObject actualObject) {(...)}

代码语言:javascript
复制
protected boolean matchesSafely(List<MyMatchedObject> actualObjectList) {(...)}

据我最近报道的问题是:https://github.com/hamcrest/JavaHamcrest/issues/30。但是由于内部java方法的意外行为,我认为它可能不是Hamcrest问题。

使用Hamcrest 1.3

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-26 08:40:35

我公司的大学解决了这个问题。

汉克雷斯特的惯例是有一种匹配方法。但这可以写得更好,前。检查方法是否有覆盖注释。

我的解决方案是删除第二个方法(也可以重命名)。在JDK6上,它靠运气工作;)

谢谢你,乔,你的刺激。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20804174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档