Annotation

6dc

Mitglied
Hey ich habe folgendes:

Die Annotation:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface RegisterCommand {
public String cmdname();
public String[] aliases();
public String description();
}


Folgenden Klassenkopf:
@RegisterCommand(cmdname="g", aliases={"scoreboardupdate"},description="Update your scoreboard!")public class CommandG extends Command{
...
}

und ich will dann da alle aus dem Package durchgehen die annotated sind:

public void registerCommands() throws InstantiationException, IllegalAccessException, ClassNotFoundException, IOException
{
PluginManager pluginManager = this.getServer().getPluginManager();
for(ClassPath.ClassInfo classInfo: ClassPath.from(this.getClassLoader()).getTopLevelClasses("dc.commands"))
{
if(classInfo.getClass().isAnnotationPresent(RegisterCommand.class))
{//HIER KOMMT ER NICHT HIN IMMER FALSE
RegisterCommand schinken = classInfo.getClass().getAnnotation(RegisterCommand.class);
RuntimeCommands.registerCommand(Data.plugin, schinken.cmdname(), Arrays.asList(schinken.aliases()), null, null, null, null);
}
}
}

Also er kommt nicht weiter bei der "if", jedoch läuft er durch die richtigen Klassen!
 

JavaMeister

Gesperrter Benutzer
weil classinfo.getClass () immer classpath.classinfo zurück gibt und nicht die klasse , die es reprensentiert.

mit getName () bekommst du den voll qualifizierten namen.

dann class.foreName () um die klasse zu laden und da drauf dann prufen, ob ansonsten da ist.
 

Ähnliche Java Themen


Oben