.class public Lcom/alibaba/fastjson/util/FieldInfo; .super Ljava/lang/Object; .source "FieldInfo.java" # interfaces .implements Ljava/lang/Comparable; # annotations .annotation system Ldalvik/annotation/Signature; value = { "Ljava/lang/Object;", "Ljava/lang/Comparable<", "Lcom/alibaba/fastjson/util/FieldInfo;", ">;" } .end annotation # instance fields .field public final alternateNames:[Ljava/lang/String; .field public final declaringClass:Ljava/lang/Class; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/lang/Class<", "*>;" } .end annotation .end field .field public final field:Ljava/lang/reflect/Field; .field public final fieldAccess:Z .field private final fieldAnnotation:Lcom/alibaba/fastjson/annotation/JSONField; .field public final fieldClass:Ljava/lang/Class; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/lang/Class<", "*>;" } .end annotation .end field .field public final fieldTransient:Z .field public final fieldType:Ljava/lang/reflect/Type; .field public final format:Ljava/lang/String; .field public final getOnly:Z .field public final isEnum:Z .field public final method:Ljava/lang/reflect/Method; .field private final methodAnnotation:Lcom/alibaba/fastjson/annotation/JSONField; .field public final name:Ljava/lang/String; .field public final nameHashCode:J .field private ordinal:I # direct methods .method public constructor (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/reflect/Field;II)V .registers 10 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/String;", "Ljava/lang/Class<", "*>;", "Ljava/lang/Class<", "*>;", "Ljava/lang/reflect/Type;", "Ljava/lang/reflect/Field;", "II)V" } .end annotation .line 50 invoke-direct {p0}, Ljava/lang/Object;->()V .line 51 iput-object p1, p0, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String; .line 52 iput-object p2, p0, Lcom/alibaba/fastjson/util/FieldInfo;->declaringClass:Ljava/lang/Class; .line 53 iput-object p3, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldClass:Ljava/lang/Class; .line 54 iput-object p4, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldType:Ljava/lang/reflect/Type; const/4 p2, 0x0 .line 55 iput-object p2, p0, Lcom/alibaba/fastjson/util/FieldInfo;->method:Ljava/lang/reflect/Method; .line 56 iput-object p5, p0, Lcom/alibaba/fastjson/util/FieldInfo;->field:Ljava/lang/reflect/Field; .line 57 iput p6, p0, Lcom/alibaba/fastjson/util/FieldInfo;->ordinal:I .line 59 invoke-virtual {p3}, Ljava/lang/Class;->isEnum()Z move-result p4 const/4 p6, 0x1 const/4 p7, 0x0 if-eqz p4, :cond_24 const-class p4, Lcom/alibaba/fastjson/JSONAware; invoke-virtual {p4, p3}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z move-result p3 if-nez p3, :cond_24 move p3, p6 goto :goto_25 :cond_24 move p3, p7 :goto_25 iput-boolean p3, p0, Lcom/alibaba/fastjson/util/FieldInfo;->isEnum:Z .line 61 iput-object p2, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldAnnotation:Lcom/alibaba/fastjson/annotation/JSONField; .line 62 iput-object p2, p0, Lcom/alibaba/fastjson/util/FieldInfo;->methodAnnotation:Lcom/alibaba/fastjson/annotation/JSONField; if-eqz p5, :cond_3a .line 65 invoke-virtual {p5}, Ljava/lang/reflect/Field;->getModifiers()I move-result p3 .line 66 iput-boolean p6, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldAccess:Z .line 67 invoke-static {p3}, Ljava/lang/reflect/Modifier;->isTransient(I)Z move-result p3 iput-boolean p3, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldTransient:Z goto :goto_3e .line 69 :cond_3a iput-boolean p7, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldAccess:Z .line 70 iput-boolean p7, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldTransient:Z .line 72 :goto_3e iput-boolean p7, p0, Lcom/alibaba/fastjson/util/FieldInfo;->getOnly:Z const-wide p3, -0x340d631b7bdddcdbL # -7.302176725335867E57 move p5, p7 .line 75 :goto_46 invoke-virtual {p1}, Ljava/lang/String;->length()I move-result p6 if-ge p5, p6, :cond_5b .line 76 invoke-virtual {p1, p5}, Ljava/lang/String;->charAt(I)C move-result p6 int-to-long v0, p6 xor-long/2addr p3, v0 const-wide v0, 0x100000001b3L mul-long/2addr p3, v0 add-int/lit8 p5, p5, 0x1 goto :goto_46 .line 80 :cond_5b iput-wide p3, p0, Lcom/alibaba/fastjson/util/FieldInfo;->nameHashCode:J .line 82 iput-object p2, p0, Lcom/alibaba/fastjson/util/FieldInfo;->format:Ljava/lang/String; .line 83 new-array p1, p7, [Ljava/lang/String; iput-object p1, p0, Lcom/alibaba/fastjson/util/FieldInfo;->alternateNames:[Ljava/lang/String; return-void .end method .method public constructor (Ljava/lang/String;Ljava/lang/reflect/Method;Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/reflect/Type;IILcom/alibaba/fastjson/annotation/JSONField;Lcom/alibaba/fastjson/annotation/JSONField;Z)V .registers 15 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/String;", "Ljava/lang/reflect/Method;", "Ljava/lang/reflect/Field;", "Ljava/lang/Class<", "*>;", "Ljava/lang/reflect/Type;", "II", "Lcom/alibaba/fastjson/annotation/JSONField;", "Lcom/alibaba/fastjson/annotation/JSONField;", "Z)V" } .end annotation .line 95 invoke-direct {p0}, Ljava/lang/Object;->()V .line 96 iput-object p1, p0, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String; .line 97 iput-object p2, p0, Lcom/alibaba/fastjson/util/FieldInfo;->method:Ljava/lang/reflect/Method; .line 98 iput-object p3, p0, Lcom/alibaba/fastjson/util/FieldInfo;->field:Ljava/lang/reflect/Field; .line 99 iput p6, p0, Lcom/alibaba/fastjson/util/FieldInfo;->ordinal:I .line 100 iput-object p8, p0, Lcom/alibaba/fastjson/util/FieldInfo;->methodAnnotation:Lcom/alibaba/fastjson/annotation/JSONField; .line 101 iput-object p9, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldAnnotation:Lcom/alibaba/fastjson/annotation/JSONField; .line 103 invoke-virtual {p0}, Lcom/alibaba/fastjson/util/FieldInfo;->getAnnotation()Lcom/alibaba/fastjson/annotation/JSONField; move-result-object p6 const/4 p7, 0x0 const/4 p8, 0x0 if-eqz p6, :cond_2d .line 106 invoke-interface {p6}, Lcom/alibaba/fastjson/annotation/JSONField;->format()Ljava/lang/String; move-result-object p9 .line 108 invoke-virtual {p9}, Ljava/lang/String;->trim()Ljava/lang/String; move-result-object v0 invoke-virtual {v0}, Ljava/lang/String;->length()I move-result v0 if-nez v0, :cond_26 move-object p9, p8 .line 112 :cond_26 invoke-interface {p6}, Lcom/alibaba/fastjson/annotation/JSONField;->alternateNames()[Ljava/lang/String; move-result-object p6 iput-object p6, p0, Lcom/alibaba/fastjson/util/FieldInfo;->alternateNames:[Ljava/lang/String; goto :goto_32 .line 114 :cond_2d new-array p6, p7, [Ljava/lang/String; iput-object p6, p0, Lcom/alibaba/fastjson/util/FieldInfo;->alternateNames:[Ljava/lang/String; move-object p9, p8 .line 116 :goto_32 iput-object p9, p0, Lcom/alibaba/fastjson/util/FieldInfo;->format:Ljava/lang/String; const/4 p6, 0x1 if-eqz p3, :cond_5b .line 119 invoke-virtual {p3}, Ljava/lang/reflect/Field;->getModifiers()I move-result p9 if-eqz p2, :cond_4e and-int/lit8 v0, p9, 0x1 if-eqz v0, :cond_4c .line 120 invoke-virtual {p2}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class; move-result-object v0 invoke-virtual {p3}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class; move-result-object v1 if-ne v0, v1, :cond_4c goto :goto_4e :cond_4c move v0, p7 goto :goto_4f :cond_4e :goto_4e move v0, p6 :goto_4f iput-boolean v0, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldAccess:Z and-int/lit16 p9, p9, 0x80 if-eqz p9, :cond_57 move p9, p6 goto :goto_58 :cond_57 move p9, p7 .line 121 :goto_58 iput-boolean p9, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldTransient:Z goto :goto_5f .line 123 :cond_5b iput-boolean p7, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldAccess:Z .line 124 iput-boolean p7, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldTransient:Z :goto_5f const-wide v0, -0x340d631b7bdddcdbL # -7.302176725335867E57 move p9, p7 .line 128 :goto_65 invoke-virtual {p1}, Ljava/lang/String;->length()I move-result v2 if-ge p9, v2, :cond_7a .line 129 invoke-virtual {p1, p9}, Ljava/lang/String;->charAt(I)C move-result v2 int-to-long v2, v2 xor-long/2addr v0, v2 const-wide v2, 0x100000001b3L mul-long/2addr v0, v2 add-int/lit8 p9, p9, 0x1 goto :goto_65 .line 133 :cond_7a iput-wide v0, p0, Lcom/alibaba/fastjson/util/FieldInfo;->nameHashCode:J if-eqz p2, :cond_bc .line 138 invoke-virtual {p2}, Ljava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class; move-result-object p1 .line 139 array-length p3, p1 if-ne p3, p6, :cond_a3 .line 140 aget-object p1, p1, p7 .line 141 const-class p3, Ljava/lang/Class; if-eq p1, p3, :cond_9f const-class p3, Ljava/lang/String; if-eq p1, p3, :cond_9f .line 143 invoke-virtual {p1}, Ljava/lang/Class;->isPrimitive()Z move-result p3 if-eqz p3, :cond_96 goto :goto_9f :cond_96 if-eqz p10, :cond_9f .line 146 invoke-virtual {p2}, Ljava/lang/reflect/Method;->getGenericParameterTypes()[Ljava/lang/reflect/Type; move-result-object p3 aget-object p3, p3, p7 goto :goto_a0 :cond_9f :goto_9f move-object p3, p1 .line 148 :goto_a0 iput-boolean p7, p0, Lcom/alibaba/fastjson/util/FieldInfo;->getOnly:Z goto :goto_b5 .line 150 :cond_a3 invoke-virtual {p2}, Ljava/lang/reflect/Method;->getReturnType()Ljava/lang/Class; move-result-object p1 .line 151 const-class p3, Ljava/lang/Class; if-ne p1, p3, :cond_ad :cond_ab move-object p3, p1 goto :goto_b3 :cond_ad if-eqz p10, :cond_ab .line 154 invoke-virtual {p2}, Ljava/lang/reflect/Method;->getGenericReturnType()Ljava/lang/reflect/Type; move-result-object p3 .line 156 :goto_b3 iput-boolean p6, p0, Lcom/alibaba/fastjson/util/FieldInfo;->getOnly:Z .line 158 :goto_b5 invoke-virtual {p2}, Ljava/lang/reflect/Method;->getDeclaringClass()Ljava/lang/Class; move-result-object p2 iput-object p2, p0, Lcom/alibaba/fastjson/util/FieldInfo;->declaringClass:Ljava/lang/Class; goto :goto_ea .line 160 :cond_bc invoke-virtual {p3}, Ljava/lang/reflect/Field;->getType()Ljava/lang/Class; move-result-object p1 .line 161 invoke-virtual {p1}, Ljava/lang/Class;->isPrimitive()Z move-result p2 if-nez p2, :cond_d8 const-class p2, Ljava/lang/String; if-eq p1, p2, :cond_d8 .line 163 invoke-virtual {p1}, Ljava/lang/Class;->isEnum()Z move-result p2 if-eqz p2, :cond_d1 goto :goto_d8 :cond_d1 if-eqz p10, :cond_d8 .line 166 invoke-virtual {p3}, Ljava/lang/reflect/Field;->getGenericType()Ljava/lang/reflect/Type; move-result-object p2 goto :goto_d9 :cond_d8 :goto_d8 move-object p2, p1 .line 169 :goto_d9 invoke-virtual {p3}, Ljava/lang/reflect/Field;->getDeclaringClass()Ljava/lang/Class; move-result-object p9 iput-object p9, p0, Lcom/alibaba/fastjson/util/FieldInfo;->declaringClass:Ljava/lang/Class; .line 170 invoke-virtual {p3}, Ljava/lang/reflect/Field;->getModifiers()I move-result p3 invoke-static {p3}, Ljava/lang/reflect/Modifier;->isFinal(I)Z move-result p3 iput-boolean p3, p0, Lcom/alibaba/fastjson/util/FieldInfo;->getOnly:Z move-object p3, p2 :goto_ea if-eqz p4, :cond_160 .line 173 const-class p2, Ljava/lang/Object; if-ne p1, p2, :cond_160 instance-of p2, p3, Ljava/lang/reflect/TypeVariable; if-eqz p2, :cond_160 .line 177 move-object p2, p3 check-cast p2, Ljava/lang/reflect/TypeVariable; .line 181 instance-of p9, p5, Ljava/lang/reflect/ParameterizedType; if-eqz p9, :cond_103 .line 182 move-object p9, p5 check-cast p9, Ljava/lang/reflect/ParameterizedType; .line 183 invoke-interface {p9}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type; move-result-object p9 goto :goto_104 :cond_103 move-object p9, p8 :goto_104 move-object p10, p4 :goto_105 if-eqz p10, :cond_12a .line 186 const-class v0, Ljava/lang/Object; if-eq p10, v0, :cond_12a iget-object v0, p0, Lcom/alibaba/fastjson/util/FieldInfo;->declaringClass:Ljava/lang/Class; if-eq p10, v0, :cond_12a .line 187 invoke-virtual {p10}, Ljava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type; move-result-object v0 .line 189 instance-of v1, v0, Ljava/lang/reflect/ParameterizedType; if-eqz v1, :cond_125 .line 190 check-cast v0, Ljava/lang/reflect/ParameterizedType; .line 191 invoke-interface {v0}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type; move-result-object v0 .line 192 invoke-virtual {p10}, Ljava/lang/Class;->getTypeParameters()[Ljava/lang/reflect/TypeVariable; move-result-object v1 invoke-static {v0, v1, p9}, Lcom/alibaba/fastjson/util/TypeUtils;->getArgument([Ljava/lang/reflect/Type;[Ljava/lang/reflect/TypeVariable;[Ljava/lang/reflect/Type;)Z move-object p9, v0 .line 186 :cond_125 invoke-virtual {p10}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class; move-result-object p10 goto :goto_105 :cond_12a if-eqz p9, :cond_144 .line 198 iget-object p10, p0, Lcom/alibaba/fastjson/util/FieldInfo;->declaringClass:Ljava/lang/Class; invoke-virtual {p10}, Ljava/lang/Class;->getTypeParameters()[Ljava/lang/reflect/TypeVariable; move-result-object p10 move v0, p7 .line 199 :goto_133 array-length v1, p10 if-ge v0, v1, :cond_144 .line 200 aget-object v1, p10, v0 invoke-virtual {p2, v1}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result v1 if-eqz v1, :cond_141 .line 201 aget-object p8, p9, v0 goto :goto_144 :cond_141 add-int/lit8 v0, v0, 0x1 goto :goto_133 :cond_144 :goto_144 if-eqz p8, :cond_160 .line 209 invoke-static {p8}, Lcom/alibaba/fastjson/util/TypeUtils;->getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class; move-result-object p2 iput-object p2, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldClass:Ljava/lang/Class; .line 210 iput-object p8, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldType:Ljava/lang/reflect/Type; .line 212 invoke-virtual {p1}, Ljava/lang/Class;->isEnum()Z move-result p2 if-eqz p2, :cond_15d const-class p2, Lcom/alibaba/fastjson/JSONAware; invoke-virtual {p2, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z move-result p1 if-nez p1, :cond_15d move p7, p6 :cond_15d iput-boolean p7, p0, Lcom/alibaba/fastjson/util/FieldInfo;->isEnum:Z return-void .line 219 :cond_160 instance-of p2, p3, Ljava/lang/Class; if-nez p2, :cond_180 if-eqz p5, :cond_167 goto :goto_168 :cond_167 move-object p5, p4 .line 220 :goto_168 invoke-static {p4, p5, p3}, Lcom/alibaba/fastjson/util/FieldInfo;->getFieldType(Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; move-result-object p2 if-eq p2, p3, :cond_17f .line 222 instance-of p3, p2, Ljava/lang/reflect/ParameterizedType; if-eqz p3, :cond_177 .line 223 invoke-static {p2}, Lcom/alibaba/fastjson/util/TypeUtils;->getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class; move-result-object p1 goto :goto_17f .line 224 :cond_177 instance-of p3, p2, Ljava/lang/Class; if-eqz p3, :cond_17f .line 225 invoke-static {p2}, Lcom/alibaba/fastjson/util/TypeUtils;->getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class; move-result-object p1 :cond_17f :goto_17f move-object p3, p2 .line 230 :cond_180 iput-object p3, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldType:Ljava/lang/reflect/Type; .line 231 iput-object p1, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldClass:Ljava/lang/Class; .line 233 invoke-virtual {p1}, Ljava/lang/Class;->isArray()Z move-result p2 if-nez p2, :cond_199 .line 234 invoke-virtual {p1}, Ljava/lang/Class;->isEnum()Z move-result p2 if-eqz p2, :cond_199 const-class p2, Lcom/alibaba/fastjson/JSONAware; .line 235 invoke-virtual {p2, p1}, Ljava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z move-result p1 if-nez p1, :cond_199 move p7, p6 :cond_199 iput-boolean p7, p0, Lcom/alibaba/fastjson/util/FieldInfo;->isEnum:Z return-void .end method .method public static getFieldType(Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; .registers 13 .annotation system Ldalvik/annotation/Signature; value = { "(", "Ljava/lang/Class<", "*>;", "Ljava/lang/reflect/Type;", "Ljava/lang/reflect/Type;", ")", "Ljava/lang/reflect/Type;" } .end annotation if-eqz p0, :cond_d8 if-nez p1, :cond_6 goto/16 :goto_d8 .line 243 :cond_6 instance-of v0, p2, Ljava/lang/reflect/GenericArrayType; const/4 v1, 0x0 if-eqz v0, :cond_26 .line 244 move-object v0, p2 check-cast v0, Ljava/lang/reflect/GenericArrayType; .line 245 invoke-interface {v0}, Ljava/lang/reflect/GenericArrayType;->getGenericComponentType()Ljava/lang/reflect/Type; move-result-object v0 .line 246 invoke-static {p0, p1, v0}, Lcom/alibaba/fastjson/util/FieldInfo;->getFieldType(Ljava/lang/Class;Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; move-result-object p0 if-eq v0, p0, :cond_25 .line 248 invoke-static {p0}, Lcom/alibaba/fastjson/util/TypeUtils;->getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class; move-result-object p0 invoke-static {p0, v1}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object; move-result-object p0 invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object p0 return-object p0 :cond_25 return-object p2 .line 255 :cond_26 invoke-static {p1}, Lcom/alibaba/fastjson/util/TypeUtils;->isGenericParamType(Ljava/lang/reflect/Type;)Z move-result v0 if-nez v0, :cond_2d return-object p2 .line 259 :cond_2d instance-of v0, p2, Ljava/lang/reflect/TypeVariable; if-eqz v0, :cond_64 .line 260 invoke-static {p1}, Lcom/alibaba/fastjson/util/TypeUtils;->getGenericParamType(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; move-result-object v0 check-cast v0, Ljava/lang/reflect/ParameterizedType; .line 261 invoke-static {v0}, Lcom/alibaba/fastjson/util/TypeUtils;->getClass(Ljava/lang/reflect/Type;)Ljava/lang/Class; move-result-object v2 .line 262 move-object v3, p2 check-cast v3, Ljava/lang/reflect/TypeVariable; move v4, v1 .line 264 :goto_3f invoke-virtual {v2}, Ljava/lang/Class;->getTypeParameters()[Ljava/lang/reflect/TypeVariable; move-result-object v5 array-length v5, v5 if-ge v4, v5, :cond_64 .line 265 invoke-virtual {v2}, Ljava/lang/Class;->getTypeParameters()[Ljava/lang/reflect/TypeVariable; move-result-object v5 aget-object v5, v5, v4 invoke-interface {v5}, Ljava/lang/reflect/TypeVariable;->getName()Ljava/lang/String; move-result-object v5 invoke-interface {v3}, Ljava/lang/reflect/TypeVariable;->getName()Ljava/lang/String; move-result-object v6 invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v5 if-eqz v5, :cond_61 .line 266 invoke-interface {v0}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type; move-result-object p0 aget-object p0, p0, v4 return-object p0 :cond_61 add-int/lit8 v4, v4, 0x1 goto :goto_3f .line 272 :cond_64 instance-of v0, p2, Ljava/lang/reflect/ParameterizedType; if-eqz v0, :cond_d8 .line 273 move-object v0, p2 check-cast v0, Ljava/lang/reflect/ParameterizedType; .line 275 invoke-interface {v0}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type; move-result-object v2 .line 281 instance-of v3, p1, Ljava/lang/reflect/ParameterizedType; const/4 v4, 0x0 if-eqz v3, :cond_7b .line 282 check-cast p1, Ljava/lang/reflect/ParameterizedType; .line 283 invoke-virtual {p0}, Ljava/lang/Class;->getTypeParameters()[Ljava/lang/reflect/TypeVariable; move-result-object p0 goto :goto_94 .line 284 :cond_7b invoke-virtual {p0}, Ljava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type; move-result-object p1 instance-of p1, p1, Ljava/lang/reflect/ParameterizedType; if-eqz p1, :cond_92 .line 285 invoke-virtual {p0}, Ljava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type; move-result-object p1 check-cast p1, Ljava/lang/reflect/ParameterizedType; .line 286 invoke-virtual {p0}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class; move-result-object p0 invoke-virtual {p0}, Ljava/lang/Class;->getTypeParameters()[Ljava/lang/reflect/TypeVariable; move-result-object p0 goto :goto_94 :cond_92 move-object p0, v4 move-object p1, p0 :goto_94 move v3, v1 move v5, v3 .line 289 :goto_96 array-length v6, v2 if-ge v3, v6, :cond_c8 if-eqz p1, :cond_c8 .line 290 aget-object v6, v2, v3 .line 291 instance-of v7, v6, Ljava/lang/reflect/TypeVariable; if-eqz v7, :cond_c5 .line 292 check-cast v6, Ljava/lang/reflect/TypeVariable; move v7, v1 .line 294 :goto_a4 array-length v8, p0 if-ge v7, v8, :cond_c5 .line 295 aget-object v8, p0, v7 invoke-interface {v8}, Ljava/lang/reflect/TypeVariable;->getName()Ljava/lang/String; move-result-object v8 invoke-interface {v6}, Ljava/lang/reflect/TypeVariable;->getName()Ljava/lang/String; move-result-object v9 invoke-virtual {v8, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v8 if-eqz v8, :cond_c2 if-nez v4, :cond_bd .line 297 invoke-interface {p1}, Ljava/lang/reflect/ParameterizedType;->getActualTypeArguments()[Ljava/lang/reflect/Type; move-result-object v4 .line 299 :cond_bd aget-object v5, v4, v7 aput-object v5, v2, v3 const/4 v5, 0x1 :cond_c2 add-int/lit8 v7, v7, 0x1 goto :goto_a4 :cond_c5 add-int/lit8 v3, v3, 0x1 goto :goto_96 :cond_c8 if-eqz v5, :cond_d8 .line 306 new-instance p0, Lcom/alibaba/fastjson/util/ParameterizedTypeImpl; invoke-interface {v0}, Ljava/lang/reflect/ParameterizedType;->getOwnerType()Ljava/lang/reflect/Type; move-result-object p1 .line 307 invoke-interface {v0}, Ljava/lang/reflect/ParameterizedType;->getRawType()Ljava/lang/reflect/Type; move-result-object p2 invoke-direct {p0, v2, p1, p2}, Lcom/alibaba/fastjson/util/ParameterizedTypeImpl;->([Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;Ljava/lang/reflect/Type;)V return-object p0 :cond_d8 :goto_d8 return-object p2 .end method # virtual methods .method public compareTo(Lcom/alibaba/fastjson/util/FieldInfo;)I .registers 4 .line 320 iget v0, p0, Lcom/alibaba/fastjson/util/FieldInfo;->ordinal:I iget v1, p1, Lcom/alibaba/fastjson/util/FieldInfo;->ordinal:I if-ge v0, v1, :cond_8 const/4 p1, -0x1 return p1 :cond_8 if-le v0, v1, :cond_c const/4 p1, 0x1 return p1 .line 328 :cond_c iget-object v0, p0, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String; iget-object p1, p1, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String; invoke-virtual {v0, p1}, Ljava/lang/String;->compareTo(Ljava/lang/String;)I move-result p1 return p1 .end method .method public bridge synthetic compareTo(Ljava/lang/Object;)I .registers 2 .line 18 check-cast p1, Lcom/alibaba/fastjson/util/FieldInfo; invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/util/FieldInfo;->compareTo(Lcom/alibaba/fastjson/util/FieldInfo;)I move-result p1 return p1 .end method .method public equals(Lcom/alibaba/fastjson/util/FieldInfo;)Z .registers 3 const/4 v0, 0x1 if-ne p1, p0, :cond_4 return v0 .line 335 :cond_4 invoke-virtual {p0, p1}, Lcom/alibaba/fastjson/util/FieldInfo;->compareTo(Lcom/alibaba/fastjson/util/FieldInfo;)I move-result p1 if-nez p1, :cond_b goto :goto_c :cond_b const/4 v0, 0x0 :goto_c return v0 .end method .method public get(Ljava/lang/Object;)Ljava/lang/Object; .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/lang/IllegalAccessException;, Ljava/lang/reflect/InvocationTargetException; } .end annotation .line 347 iget-boolean v0, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldAccess:Z if-eqz v0, :cond_b .line 348 iget-object v0, p0, Lcom/alibaba/fastjson/util/FieldInfo;->field:Ljava/lang/reflect/Field; invoke-virtual {v0, p1}, Ljava/lang/reflect/Field;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 return-object p1 .line 351 :cond_b iget-object v0, p0, Lcom/alibaba/fastjson/util/FieldInfo;->method:Ljava/lang/reflect/Method; const/4 v1, 0x0 new-array v1, v1, [Ljava/lang/Object; invoke-virtual {v0, p1, v1}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 return-object p1 .end method .method public getAnnotation()Lcom/alibaba/fastjson/annotation/JSONField; .registers 2 .line 339 iget-object v0, p0, Lcom/alibaba/fastjson/util/FieldInfo;->fieldAnnotation:Lcom/alibaba/fastjson/annotation/JSONField; if-eqz v0, :cond_5 return-object v0 .line 343 :cond_5 iget-object v0, p0, Lcom/alibaba/fastjson/util/FieldInfo;->methodAnnotation:Lcom/alibaba/fastjson/annotation/JSONField; return-object v0 .end method .method public set(Ljava/lang/Object;Ljava/lang/Object;)V .registers 4 .annotation system Ldalvik/annotation/Throws; value = { Ljava/lang/IllegalAccessException;, Ljava/lang/reflect/InvocationTargetException; } .end annotation .line 356 iget-object v0, p0, Lcom/alibaba/fastjson/util/FieldInfo;->method:Ljava/lang/reflect/Method; if-eqz v0, :cond_c .line 357 filled-new-array {p2}, [Ljava/lang/Object; move-result-object p2 invoke-virtual {v0, p1, p2}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; return-void .line 361 :cond_c iget-object v0, p0, Lcom/alibaba/fastjson/util/FieldInfo;->field:Ljava/lang/reflect/Field; invoke-virtual {v0, p1, p2}, Ljava/lang/reflect/Field;->set(Ljava/lang/Object;Ljava/lang/Object;)V return-void .end method .method public toString()Ljava/lang/String; .registers 2 .line 316 iget-object v0, p0, Lcom/alibaba/fastjson/util/FieldInfo;->name:Ljava/lang/String; return-object v0 .end method