Use faster isAnnotationPresent check
Followup from https://github.com/square/moshi/pull/749#discussion_r235224202
This commit is contained in:
parent
afb82cb3e8
commit
dbe7bfa15f
1 changed files with 7 additions and 2 deletions
|
@ -73,13 +73,18 @@ final class ClassJsonAdapter<T> extends JsonAdapter<T> {
|
|||
if (Modifier.isAbstract(rawType.getModifiers())) {
|
||||
throw new IllegalArgumentException("Cannot serialize abstract class " + rawType.getName());
|
||||
}
|
||||
for (Annotation annotation : rawType.getDeclaredAnnotations()) {
|
||||
if ("kotlin.Metadata".equals(annotation.annotationType().getName())) {
|
||||
try {
|
||||
//noinspection unchecked if the Class.forName works, the cast will work.
|
||||
Class<? extends Annotation> metadataClass =
|
||||
(Class<? extends Annotation>) Class.forName("kotlin.Metadata");
|
||||
if (rawType.isAnnotationPresent(metadataClass)) {
|
||||
throw new IllegalArgumentException("Cannot serialize Kotlin type " + rawType.getName()
|
||||
+ ". Reflective serialization of Kotlin classes without using kotlin-reflect has "
|
||||
+ "undefined and unexpected behavior. Please use KotlinJsonAdapter from the "
|
||||
+ "moshi-kotlin artifact or use code gen from the moshi-kotlin-codegen artifact.");
|
||||
}
|
||||
} catch (ClassNotFoundException ignored) {
|
||||
|
||||
}
|
||||
|
||||
ClassFactory<Object> classFactory = ClassFactory.get(rawType);
|
||||
|
|
Loading…
Reference in a new issue