【发布时间】:2014-08-20 10:15:08
【问题描述】:
我对注释的使用非常陌生。 谁能告诉我如何声明一个注解并调用所有使用该注解声明的方法/变量
我用java来实现这个注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
public @interface isAnnotatedVariable {
String varName();
}
并使用了
中的注解public class Example {
@isAnnotatedVariable(varName = "S")
public String var;
@isAnnotatedVariable(varName = "S")
public String var1;
}
并尝试使用
获取变量名public class BuildStepClassDetector {
public static void main(String[] args) throws IOException {
BuildStepClassDetector build = new BuildStepClassDetector();
final Logger4J logger = new Logger4J(build.getClass().getName());
final HashMap<String, Class<?>> isAnnotatedVariables = new HashMap<String, Class<?>>();
final TypeReporter reporter = new TypeReporter() {
@SuppressWarnings("unchecked")
@Override
public Class<? extends Annotation>[] annotations() {
return new Class[] { isAnnotatedVariable.class };
}
@SuppressWarnings("unchecked")
@Override
public void reportTypeAnnotation(Class<? extends Annotation> arg0, String arg1) {
Class<? extends isAnnotatedVariable> isAnnotatedVariableClass;
try {
isAnnotatedVariableClass = (Class<? extends isAnnotatedVariable>) Class.forName(arg1);
isAnnotatedVariables.put(
isAnnotatedVariableClass.getAnnotation(isAnnotatedVariable.class).varName(),
isAnnotatedVariableClass);
} catch (ClassNotFoundException e) {
logger.getStackTraceString(e);
}
}
};
final AnnotationDetector cf = new AnnotationDetector(reporter);
cf.detect();
System.out.println(isAnnotatedVariables.keySet());
}
}
【问题讨论】:
-
1.您正在研究哪种语言? 2. 你尝试了什么 0.3。是什么导致了问题? 4.你问的是什么注释?...只是......“不清楚你在问什么”
标签: java annotations