2014-07-27 17 views
8

Załóżmy, że mam wewnętrzną metodę, która powinna być używana tylko w określonych sytuacjach.Niestandardowe ostrzeżenie Eclipse o adnotacji

Czy istnieje możliwość, w Eclipse, oznaczenia go jako wewnętrznego i wyświetla ostrzeżenie, gdy jest używany, aby uniemożliwić mi lub osobom, które będą używać mojego API do korzystania z niego przez pomyłkę, nie wiedząc, co robią. Nie mogę zmienić jego widoczności, ponieważ może być używana również w innych pakietach/klasach nierozszerzających.

coś takiego:

@Internal 
public void doSomeInternalStuff() 
{ 
    // ... 
} 

A potem, ostrzeżenie w Eclipse:

enter image description here

Masz rację.

Jakaś nadzieja?

Odpowiedz

9

JSR269 (Pluggable Adnotacja Procesor API) pozwala na pisanie własnych procesory adnotacji, które mogą obsługiwać niestandardowe adnotacji i umożliwia drukowanie błędów lub ostrzeżeń za pomocą javax.annotation.processing.Messager. Poniżej znajduje się przykład.

import java.util.Set; 

import javax.annotation.processing.AbstractProcessor; 
import javax.annotation.processing.RoundEnvironment; 
import javax.annotation.processing.SupportedAnnotationTypes; 
import javax.annotation.processing.SupportedSourceVersion; 
import javax.lang.model.SourceVersion; 
import javax.lang.model.element.Element; 
import javax.lang.model.element.TypeElement; 
import javax.tools.Diagnostic; 

@SupportedAnnotationTypes("fully.qualified.name.of.InternalAnnotationType") 
@SupportedSourceVersion(SourceVersion.RELEASE_6) 
public class CustomAnnotationProcessor extends AbstractProcessor { 

    @Override 
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { 
     for (Element element : roundEnv.getElementsAnnotatedWith(InternalAnnotationType.class)) { 
      InternalAnnotationType internalAnnotation = element.getAnnotation(InternalAnnotationType.class); 
      String message = "The method " + element.getSimpleName() 
         + " is marked internal and its use is discouraged"; 
      processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING, message); 
     } 
     return true; 
    } 
} 

W Eclipse można zarejestrować procesory adnotacji w Java Compiler klikając prawym przyciskiem myszy na projekcie, a następnie wybierając Właściwości ->Java Compiler ->Adnotacja Processing - Ścieżka>Fabryka i dodawanie słoika zawierającego niestandardowy procesor adnotacji. Here to interesujący post wyjaśniający szczegóły.

Alternatywnie, można umieścić wszystkie swoje „wewnętrzne” metoda API wewnątrz specjalnej klasy i dodać dostępu regułę dla tej klasy w swojej Eclipse kompilacji ścieżki, tak, że każdy kod w swoim projekcie, zależy od tej klasy wyświetli ostrzeżenie.

+0

Tego właśnie szukałem - thx! –

Powiązane problemy