2012-04-02 7 views
21

C'è un'annotazione comune o standard in Java per metodi che, sebbene definiti, devono ancora essere implementati?Java: annotazione comune per "Non ancora implementata"

modo che, ad esempio, se io fossi usando una versione pre-alpha di una libreria che conteneva qualcosa come

@NotImplementedYet 
public void awesomeMethodThatTotallyDoesExactlyWhatYouNeed(){ /* TODO */ } 

che avrei avuto un avvertimento in fase di compilazione quando si cerca di chiamare awesomeMethodThatTotallyDoesExactlyWhatYouNeed?

+2

maggior parte delle biblioteche semplicemente non esporre questo metodo a tutti. Quale sarebbe il punto? –

+1

L'ho incontrato, [come utente] (https://github.com/NICTA/scoobi/issues/71). Forse per rendere l'API futura un'idea, mettere gli utenti pronti per questo? – rampion

+0

Si potrebbe, ovviamente, creare la propria annotazione "@NotImplementedYet", e usarlo come vuoi: http://docs.oracle.com/javase/1.5.0/docs/guide/language/annotations.html – paulsm4

risposta

14

Si potrebbe desiderare di utilizzare UnsupportedOperationException e rilevare le chiamate a-ancora-a-essere attuate metodi quando si esegue i test.

+2

L'OP sta cercando un'annotazione che dirà al chiamante in fase di compilazione che il metodo genererà 'UnsupportedOperationException'. Mentre l'altra parte che crea un'annotazione di questo tipo è facile, sta cercando qualcosa che sia accettato come convenzione –

+0

Non esattamente la soluzione richiesta ma meglio di niente, e alquanto ortogonale (meglio in altri modi). – bbarker

0

Google librerie usano le annotazioni per @Beta API che è destinata a cambiare, ma i metodi sono implementati anche se

1

Si potrebbe creare il proprio annotazione. Con il criterio di conservazione del runtime è possibile quindi configurare le build di destinazione per sapere di cercare questa annotazione, se necessario.

import java.lang.annotation.ElementType; 
import java.lang.annotation.Retention; 
import java.lang.annotation.RetentionPolicy; 
import java.lang.annotation.Target; 

@Target({ 
    ElementType.ANNOTATION_TYPE, 
    ElementType.METHOD, 
    ElementType.CONSTRUCTOR, 
    ElementType.FIELD}) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface Unimplemented { 

    boolean value() default true; 
} 
Problemi correlati