获取有关在Java中的注释信息,我有这样的注释类型类:通过反射
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface RemoteTcpAccess {
public int port();
}
并将其应用在另一个类是这样的:
@RemoteTcpAccess(port = 444)
public class CalculatorService {
public int Add(int a, int b) {
return a + b;
}
public void DisplayText(String text) {
System.out.println(text);
}
}
现在,我得到了CalculatorService的类对象,并尝试获取有关RemoteTcpAccess注释的信息:
private static void CheckRemoteTcpAccess(List<Class> classes) {
for (Class class1 : classes) {
for (Annotation annotation : class1.getDeclaredAnnotations()) {
if (AnnotationEquals(annotation, ComponentsProtocol.REMOTE_TCP_ACCESS)) {
//GET INFORMATION
}
}
}
}
private static boolean AnnotationEquals(Annotation classAnnotation, String protocolAnnotation) {
return classAnnotation.toString()
.substring(0, classAnnotation.toString().indexOf("("))
.equals(protocolAnnotation);
}
我能够识别如果该类已经在其上应用RemoteTcpAccess注释,但我不能得到什么领域有注释和inforamtion什么样的价值观有那些领域,如:
场口 - 价值444
有什么办法如何获得那些通过反思的信息?
感谢
非常有用,我会检查instanceof关键字!但不是永远instanceof RemoteTcpAccess吗? –
@JohnSmith在这个例子中是的,但想想你的情况(通过注释循环)。如果该类有多个注释,则它们可能不是“RemoteTcpAccess”类型。如果您盲目地执行投射并且稍后课程获得注解,则代码将会中断。 –