2

今日、現在のグアバのバージョンは次のようです。

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

Joshua Bloch が彼を誤って引用しない限りnull( 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、具体的には 13.0.1 の NullPointerTester が含まれますが、これは機能するはずです。

于 2012-10-09T03:38:52.823 に答える