2012-04-02 22 views
21

¿Hay una anotación común o estándar en Java para los métodos que, si bien están definidos, aún no se han implementado?Java: Anotación común para "No se ha implementado todavía"

Así que, por ejemplo, si estuviera usando una versión pre-alpha de una biblioteca que contenía algo así como

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

me gustaría obtener una advertencia de tiempo de compilación al intentar llamar awesomeMethodThatTotallyDoesExactlyWhatYouNeed?

+2

La mayoría de las bibliotecas simplemente no exponen ese método en absoluto. ¿Cuál sería el punto? –

+1

Lo he encontrado, [como usuario] (https://github.com/NICTA/scoobi/issues/71). ¿Tal vez para flotar la futura API como una idea, preparar a los usuarios para ello? – rampion

+0

Podría, por supuesto, crear su propia anotación "@NotImplementedYet" y usarla como desee: http://docs.oracle.com/javase/1.5.0/docs/guide/language/annotations.html – paulsm4

Respuesta

14

Es posible que desee utilizar UnsupportedOperationException y detectar las llamadas que aún no se han implementado al ejecutar sus pruebas.

+2

OP está buscando una anotación que le dirá a la persona que llama en el momento de la compilación que el método lanzará 'UnsupportedOperationException'. Como otra parte que crea dicha anotación es fácil, está buscando algo que se acepte como la convención –

+0

No es exactamente la solución solicitada, pero es mejor que nada, y algo ortogonal (mejor en otras formas). – bbarker

0

Google bibliotecas utilizan las anotaciones @Beta de API que es probable que cambie, pero los métodos se implementan aunque

1

Usted puede crear su propia anotación. Con la política de retención en tiempo de ejecución puede configurar compilaciones de destino para saber si necesita buscar esta anotación, si es necesario.

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; 
} 
Cuestiones relacionadas