2010-10-06 8 views
28

Compiler kann mit diesem Aufruf beschweren stoppen:Wie entferne ich die Warnung von einem EasyMock.anyObject (List.class) nennen

EasyMock.anyObject(List.class) 

Ich versuchte

Liste der Typ
EasyMock.anyObject(List<MyType>.class) 

angeben aber es scheint keine Option zu sein (jedenfalls ist es dumm, da Java den Typ während der Kompilierung löscht)

Gibt es einen sauberen Weg (@SuppressWarning ist kein sauberer Weg IMO), um diese Warnung zu entfernen?

Danke

+0

welche warnung? und welcher Compiler? – irreputable

Antwort

55

es nicht möglich ist. Ich werde es eine generische Einschränkung nennen. Leider ist es nicht immer möglich, eine Warnung für eine vollkommen normale Verwendung zu entfernen (wie die Verwendung der Klasse einer generischen Klasse).

jedoch mit EasyMock Sie folgendes tun:

EasyMock.<List<MyType>> anyObject() 

, die das gleiche tun wird, aber ohne Vorwarnung. Das von Ihnen verwendete anyObject existiert, weil es etwas lesbarer ist und statische Importe erlaubt.

+0

+1 Obwohl es so aussieht, als ob die Überprüfung des _type_ des Parameters entfernt wird, führt EasyMock diese Überprüfung nicht durch. Also zu EasyMock, das ist äquivalent. – Gray

+1

Gibt es eine verfügbare Referenz oder eine breitere Erklärung dessen, was die obige Syntax tatsächlich macht? –

+0

Wenn Sie auf Java 8 und höher sind, funktioniert nur die Verwendung von 'EasyMock.anyObject()'. –

4

nur als Vorschlag:

interface A extends List<MyType> {}; 
EasyMock.anyObject(A.class) 
Verwandte Themen