저는 Java에 익숙하지 않고 Java Annotation에 관한 문제가 있습니다. 짧은 코드 : to "TYPE"을 설정하고 "SynCheck"클래스 위에 주석을 배치하면 코드가 올바르게 작동합니다. 최대한 빨리 @Target (소스 코드와 같이) "방법"로 변경하고 "isValid"-method 통해 주석을 배치 할 때, 그것은 NullPointerException이 원인이 나는 이유를 알아낼 수 없습니다. 코드를 살펴보십시오. (그것은 일종의 이메일 문법 검사기이다).Java 주석 : @Target (ElementType = METHOD)을 사용하면 NPE가 발생합니다.
Main.java :
package emailvalid;
import java.lang.annotation.Annotation;
public class Main {
public static void main(String[] args) throws Exception {
SynCheck validate = new SynCheck();
Class<? extends SynCheck> c = validate.getClass();
Annotation an = c.getAnnotation(InputVal.class);
InputVal s = (InputVal)an;
System.out.println(s.input());
System.out.println("Syntax: " + SynCheck.isValid(s.input()));
}
}
SynCheck.java :
package emailvalid;
import java.util.regex.Pattern;
public class SynCheck {
@InputVal(input = "[email protected]")
public static boolean isValid(String checkAddr)
{
final Pattern regexevalpat = Pattern.compile(
"^((?=.{1,63}$)[a-zA-Z0-9]+[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\’\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]{0,})@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9-]+$");
if (!regexevalpat.matcher(checkAddr).matches()) {
return false;
} else {
return true;
}
}
}
InputVal.java : 내가 잘못
package emailvalid;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface InputVal {
String input();
}
을 뭐하는 거지?
도움을 주시면 감사하겠습니다. 감사합니다.
'c.getAnnotation()'은 실제로'ElementType.METHOD'가 필요한 동안'ElementType.TYPE'을 사용하여 주석을 얻으려고합니다. – yegodm