주석 처리기를 작성 중이며 특정 TypeMirror
이 특정 인터페이스를 구현하는지 확인해야합니다. Java Annotations Processor: Check if TypeMirror implements specific interface 질문은 제네릭이 아닌 인터페이스에 대한 대답을 제공합니다. 그러나 일반적인 인터페이스에서는 작동하지 않습니다. 예를 들어 String
이 Comparable<String>
을 구현하고 있고 isAssignable을 사용하는 코드가 작동하지 않습니다.Java Annotation Processor : TypeMirror가 특정 제네릭 인터페이스를 구현하는지 확인하십시오.
TypeMirror tm = elementUtil.getTypeElement("java.lang.String").asType();
TypeMirror serializable = elementUtil.getTypeElement("java.io.Serializable").asType();
boolean isSerializable = typeUtil.isAssignable(tm, serializable);
//here isSerializable is true
하지만이 코드는하지 않습니다 :
이 코드는 예상대로 작동
TypeMirror tm = elementUtil.getTypeElement("java.lang.String").asType();
TypeMirror comparable = elementUtil.getTypeElement("java.lang.Comparable").asType();
boolean isComparable = typeUtil.isAssignable(tm, comparable);
//here isComparable is false
생각, 이유는 '비교'TypeElement는 일반적으로 문자열로 정의되어 있는지이라고 매개 변수를 사용하지만 주위를 둘러 보는 방법을 모르겠습니다.
'tm'을 정의하지 않았습니다. 스 니펫 대신 컴파일하고 실행할 수있는 전체 파일을 제공하면 다른 사람들이 문제를 이해하고 도움을 줄 수 있습니다. – mernst
tm은 String 용 TypeMirror이며 추가되었습니다. – AreSo