2

今天,目前的 Guava 版本似乎是:

release is 13.0.1, August 3, 2012.

但我检查了以下来源:

git clone https://code.google.com/p/guava-libraries/

并对我来说似乎非常有用的测试工具产生了兴趣:

http://code.google.com/p/guava-libraries/source/browse/guava-testlib/src/com/google/common/testing/NullPointerTester.java

我试图验证我的所有方法null都像 Doug Lea ( http://gee.cs.oswego.edu/dl/html/vita.html ) 似乎做的那样讨厌,除非 Joshua Bloch 错误地引用了他的话 ( http: //www.youtube.com/watch?v=ZeO_J2OcHYM#t=26m35s)处于“空敌对”状态。

无论如何,NullPointerTester.java似乎很完美,所以我正在尝试将它构建到我的项目中。

当我遇到基本上属于未来版本的类时,遵循依赖项(例如NullPointerTester-> , -> ...)是乏味的。Invokable<?, ?>@since 14.0

构建下一个/未来版本的 Guava 的自包含 JAR 的最佳方法是什么,并为我处理所有依赖项?注意:来源似乎是“全部” git...


你可以在这里停止阅读。

我迫不及待地想做这样的事情,我认为这真的很酷:

注意:缺少的是“安全检查”,如“如果构造函数已设为私有,请检查我是否无法反射调用它......

如果我是一个更好的编码员,我会做出贡献,但这是我能做的,而且很差,尽管意图应该很清楚?

static boolean isDefaultConstructorDisabled(Class<?> type) {
  boolean isDefaultConstructorDisabled = false;
  Constructor<?>[] declaredConstructors = type.getDeclaredConstructors();
  Constructor<?> defaultContructor = declaredConstructors[0];
  defaultContructor.setAccessible(true);
  try {
    defaultContructor.newInstance();
  } catch (InvocationTargetException invocationTargetException) {
    Throwable cause = invocationTargetException.getCause();
    if (cause instanceof UnsupportedOperationException
        && cause.getMessage().contains(
            ErrorMessage.DefaultConstructor.DISABLED)) {
      isDefaultConstructorDisabled = true;
    }
  } catch (Throwable throwable) {
    throwable.printStackTrace();
  }
  return isDefaultConstructorDisabled;
}
4

2 回答 2

2

您是否尝试在 Maven 中查找?

http://search.maven.org/#browse%7C-723200679

我认为 guava-testlib 是包含 NullPointerTester 的。你可以抓住 13.0.1 罐子。

http://search.maven.org/#browse%7C1590928164

于 2012-10-09T02:14:17.903 回答
1

如果您克隆了整个 Guava 存储库,那么 v13.0.1 标记将具有 guava-testlib,特别是 NullPointerTester,从 13.0.1 开始,它应该可以工作——不是吗?

于 2012-10-09T03:38:52.823 回答