2012-03-22 12 views
11

Mi piacciono i nuovi controlli API Lint di ADT rev 17, ma il nuovo controllo di correttezza dell'API mi ha bloccato. Ho la seguente riga di codice:Le annotazioni in linea danno errori di sintassi

listView.setOverScrollMode(OVER_SCROLL_NEVER); 

Lint sta riportando su questa linea:

chiamata richiede livello di API 9 (corrente min è 4)

According to the documentation, dovrei essere in grado di aggiungere un'annotazione sopra la linea, in questo modo:

@TargetApi(9) 
listView.setOverScrollMode(OVER_SCROLL_NEVER); 

Questo, però, dà un errore di sintassi in Java 1.6:

Errore di sintassi sulla memoria (s), costrutto fuori luogo (s)

+0

Questo può essere facilmente evitato estraendo la/e linea/e in questione in una funzione e aggiungendo l'annotazione lì, ma la documentazione suggerisce specificamente che l'annotazione funzioni in linea. –

risposta

5

che non è permesso in Java (fino al/se JSR 308 viene aggiunto); puoi solo annotare classi, metodi, campi, parametri e dichiarazioni variabili. È quest'ultimo che viene mostrato nei documenti. Tuttavia, per i controlli basati su bytecode come il controllo API, potrebbe essere necessario posizionarlo su un metodo o classe (o classe anonima/interna). L'aggettivo rapido Aggiungi annotazione per questi avvertimenti in lanugine dovrebbe fare la cosa giusta.

+0

Ah, dichiarazioni variabili. Questo è quello che stavo trascurando. Grazie per segnalarlo! –

+0

Un'idea da menzionare nei documenti (ad esempio il blogpost al momento dell'ADT17) su http://tools.android.com/recent?offset=10. – pjv

Problemi correlati