2016-08-15 3 views
2

Ich möchte annotite Java-Paket mit einfachen Anmerkung zu annotieren:Wie Java-Paket und reflektieren Metadaten

@Target(ElementType.PACKAGE) 
public @interface Related { 
    int apiVersion() default 0; 
} 

Jedoch, wenn ich es zu jedem Paket hinzuzufügen versuche ich Kompilierungsfehler

Error:(1, 14) java: cannot find symbol 
    symbol: class Related 
    location: package com.test.xxx 
haben

Jede Hilfe wird geschätzt!

EDIT

Nach etwas Suchen fand ich auch diese Art von Fehler

Error:(1, 1) java: package annotations should be in file package-info.java 
+0

mit Gibt es nur einen Fehler von comiler produziert? – vsminkov

+1

danke für die schnelle antwort! nein, ich habe einen anderen gefunden - 'Fehler: (1, 1) java: Paketanmerkungen sollten in der Datei paketinfo.java' sein. – user6719582

Antwort

1

Zur Anzeige Anmerkung platzieren auf Paket sollten Sie package-info.java-Datei erstellen, die Paketdefinition wie folgt enthalten:

@Related 
package tld.some.name; 

um in der Lage sein Paket zu reflektieren reflektieren Sie müssen auch 012 einrichten

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.PACKAGE) 
public @interface Related { 
    // stuff... 
} 

Und dann kann man schließlich Paket reflektieren:

SomeClassInPackage.class.getPackage().getAnnotation(Related.class) 

Sie können auch Paket mit Namen reflektieren java.lang.Package

Package.getPackage("tld.some.name").getAnnotation(Related.class) 
+0

Aber wie kann ich das Paket basierend auf dem Paketnamen des Pakets reflektieren? – user6719582

+0

@ user6719582 Ich werde meine Antwort aktualisieren – vsminkov

+0

@ user6719582 getan! – vsminkov

Verwandte Themen