使用java反射
class A {
@two
public method1() {
}
@one
public method2() {
}
@two
public method3() {
}
public method4() {
}
}
在上面给出的代码示例中,我想根据用户的选择检索带注释的方法,非注释方法和类中存在的所有类型的方法。 例如 - 在上面给出的示例中,我想要仅检索类A的带注释的方法,或仅检索类A的非带注释的方法或类A中存在的所有方法。本示例的代码应该是什么。
有人可以帮帮我......
答案 0 :(得分:0)
public static void main(String[] args) throws Exception {
Class clazz = B.class;
List<Method> allMethods = new ArrayList<Method>(Arrays.asList(clazz.getDeclaredMethods()));
try {
for (Method method : allMethods) {
method.setAccessible(true);
if (null != method.getAnnotations() && method.getAnnotations().length > 0) {
Annotation[] annotations = method.getAnnotations();
System.out.println(method.getName());
for (Annotation annotation : annotations) {
System.out.println(annotation);
}
} else {
System.out.println(method.getName());
}
}
} catch (Exception e) {
System.out.println(e);
}
}
public class B {
public void getValue() {
}
@Deprecated
public void getValue1() {
}
}
<强>输出强>
getValue
getValue1
@java.lang.Deprecated()
要记住的要点
1。)上述方法使用Java Reflection
。
2。)java.lang.reflect.Method
有两种方法getAnnotations()
和getDeclaredAnnotations()
,可根据需要使用。有关详细信息,请阅读Javadoc。
3.)它还有isAnnotationPresent()
方法,用于检查moethod上的特定注释。
4.)以上内容可用于访问字段和方法属性。