2012-04-02 11 views
21

Gibt es eine gemeinsame oder Standard-Annotation in Java für Methoden, die zwar definiert, hat noch umgesetzt werden?Java: Common Annotation für „noch nicht implementiert“

, so dass zum Beispiel, wenn ich eine Pre-Alpha-Version einer Bibliothek waren verwenden, die etwas enthalten wie

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

würde ich einen Compiler-Warnung erhalten, wenn sie versuchen awesomeMethodThatTotallyDoesExactlyWhatYouNeed zu anrufen?

+2

Die meisten Bibliotheken werden diese Methode überhaupt nicht offen legen. Was wäre der Sinn? –

+1

Ich habe es gefunden, [als Benutzer] (https://github.com/NICTA/scoobi/issues/71). Vielleicht, um die zukünftige API als eine Idee zu veröffentlichen, um die Benutzer darauf vorzubereiten? – rampion

+0

Sie könnten natürlich auch Ihre eigene „@NotImplementedYet“ Annotation erstellen, und verwenden Sie es, wie Sie wollen: http://docs.oracle.com/javase/1.5.0/docs/guide/language/annotations.html – paulsm4

Antwort

14

Sie möchten vielleicht UnsupportedOperationException und erkennen Anrufe zu-noch-zu-sein-implementierten Methoden verwenden, wenn die Tests ausgeführt werden.

+2

OP sucht nach einer Annotation, die dem Aufrufer bei der Kompilierung mitteilt, dass die Methode 'UnsupportedOperationException' auslöst. Da die andere Seite, die eine solche Annotation erstellt, einfach ist, sucht er nach etwas, das als Konvention akzeptiert wird. –

+0

Nicht genau die gewünschte Lösung, aber besser als nichts und etwas orthogonal (besser auf andere Weise). – bbarker

0

Google Bibliotheken verwenden, um die @Beta Anmerkungen für API, die sich wahrscheinlich zu ändern, aber die Methoden sind implementiert, obwohl

1

Sie Ihre eigene Anmerkung erstellen können. Mit der Laufzeitverwaltungsrichtlinie können Sie dann Ziel-Builds konfigurieren, um nach dieser Annotation zu suchen, falls erforderlich.

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; 
} 
Verwandte Themen