今天,目前的 Guava 版本似乎是:
release is 13.0.1, August 3, 2012.
但我检查了以下来源:
git clone https://code.google.com/p/guava-libraries/
并对我来说似乎非常有用的测试工具产生了兴趣:
我试图验证我的所有方法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;
}