2010-10-06 9 views
28

compilatore non può smettere di lamentarsi con questo invito:Come faccio a rimuovere l'avvertimento da un EasyMock.anyObject (List.class) chiamano

EasyMock.anyObject(List.class) 

ho provato a specificare il tipo di lista

EasyMock.anyObject(List<MyType>.class) 

ma non sembra essere un'opzione (comunque, è stupido dal momento che java cancellerà il tipo durante la compilazione)

C'è un modo pulito (@SuppressWarning non è un modo pulito IMO) per rimuovere questo avviso?

Grazie

+0

quale avviso? e quale compilatore? – irreputable

risposta

55

Non è possibile. Lo chiamerò un limite generico. Purtroppo non è sempre possibile rimuovere un avviso per un utilizzo perfettamente normale (come l'utilizzo della classe di una classe generica).

Tuttavia, con EasyMock è possibile effettuare le seguenti operazioni:

EasyMock.<List<MyType>> anyObject() 

che farà la stessa cosa, ma senza preavviso. Il anyObject che hai usato esiste perché è un po 'più leggibile e consente importazioni statiche.

+0

+1 Anche se sembra che questo stia rimuovendo il controllo sul _type_ del parametro, EasyMock non lo fa comunque. Quindi per EasyMock, questo è equivalente. – Gray

+1

Esiste un riferimento disponibile o una spiegazione più ampia di ciò che la sintassi precedente sta effettivamente facendo? –

+0

Se si utilizza Java 8 e versioni successive, sarà sufficiente utilizzare 'EasyMock.anyObject()'. –

4

solo come suggerimento:

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