4

現在、私はやっています

import org.easymock.EasyMock;
...
foo.bar(EasyMock.<List<String>>anyObject());

class について言及しないようにする方法はあるのだろうかEasyMock。私はこのようなことを念頭に置いています:

import static org.easymock.EasyMock.anyObject;
...
foo.bar(anyObject<List<String>>());

ただし、これはコンパイルされません。それを行う他の方法はありますか?

4

3 に答える 3

7

静的にインポートされたメソッドに型引数を提供する方法はありません (最初のスニペットで行うように、クラス名を含める必要はありません)。それをサポートするような構文はありません。

セクション 15.12, Java言語仕様のメソッド呼び出し式を参照してください:

MethodInvocation:
        MethodName ( ArgumentListopt )
        Primary . NonWildTypeArgumentsopt Identifier (ArgumentListopt)
        super . NonWildTypeArgumentsopt Identifier (ArgumentListopt)
        ClassName . super . NonWildTypeArgumentsopt Identifier (ArgumentListopt)
        TypeName . NonWildTypeArguments Identifier (ArgumentListopt)

最初のオプションは、先行するドットを含まない唯一のオプションであり、型引数を提供する可能性が含まれていません (他のオプションのように)。

于 2012-01-03T08:05:08.837 に答える
1

そのような構文はありません。ただし、できることは、変数に値を割り当てて、Java が型を推測できるようにすることです。残念ながら、より読みやすいコードは得られません。

于 2012-01-03T08:21:04.590 に答える
0

私が使う

import static org.easymock.EasyMock.anyObject;
...
foo.bar((List<String>) anyObject());
于 2012-01-03T08:09:59.217 に答える