jimu-decompiled/sources/com/google/gson/JsonPrimitive.java
2025-05-13 19:24:51 +02:00

191 lines
6.0 KiB
Java

package com.google.gson;
import com.google.gson.internal.C$Gson$Preconditions;
import com.google.gson.internal.LazilyParsedNumber;
import java.math.BigDecimal;
import java.math.BigInteger;
/* loaded from: classes.dex */
public final class JsonPrimitive extends JsonElement {
private static final Class<?>[] PRIMITIVE_TYPES = {Integer.TYPE, Long.TYPE, Short.TYPE, Float.TYPE, Double.TYPE, Byte.TYPE, Boolean.TYPE, Character.TYPE, Integer.class, Long.class, Short.class, Float.class, Double.class, Byte.class, Boolean.class, Character.class};
private Object value;
public JsonPrimitive(Boolean bool) {
setValue(bool);
}
private static boolean isIntegral(JsonPrimitive jsonPrimitive) {
Object obj = jsonPrimitive.value;
if (!(obj instanceof Number)) {
return false;
}
Number number = (Number) obj;
return (number instanceof BigInteger) || (number instanceof Long) || (number instanceof Integer) || (number instanceof Short) || (number instanceof Byte);
}
private static boolean isPrimitiveOrString(Object obj) {
if (obj instanceof String) {
return true;
}
Class<?> cls = obj.getClass();
for (Class<?> cls2 : PRIMITIVE_TYPES) {
if (cls2.isAssignableFrom(cls)) {
return true;
}
}
return false;
}
@Override // com.google.gson.JsonElement
public JsonPrimitive deepCopy() {
return this;
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || JsonPrimitive.class != obj.getClass()) {
return false;
}
JsonPrimitive jsonPrimitive = (JsonPrimitive) obj;
if (this.value == null) {
return jsonPrimitive.value == null;
}
if (isIntegral(this) && isIntegral(jsonPrimitive)) {
return getAsNumber().longValue() == jsonPrimitive.getAsNumber().longValue();
}
if (!(this.value instanceof Number) || !(jsonPrimitive.value instanceof Number)) {
return this.value.equals(jsonPrimitive.value);
}
double doubleValue = getAsNumber().doubleValue();
double doubleValue2 = jsonPrimitive.getAsNumber().doubleValue();
if (doubleValue != doubleValue2) {
return Double.isNaN(doubleValue) && Double.isNaN(doubleValue2);
}
return true;
}
@Override // com.google.gson.JsonElement
public BigDecimal getAsBigDecimal() {
Object obj = this.value;
return obj instanceof BigDecimal ? (BigDecimal) obj : new BigDecimal(obj.toString());
}
@Override // com.google.gson.JsonElement
public BigInteger getAsBigInteger() {
Object obj = this.value;
return obj instanceof BigInteger ? (BigInteger) obj : new BigInteger(obj.toString());
}
@Override // com.google.gson.JsonElement
public boolean getAsBoolean() {
return isBoolean() ? getAsBooleanWrapper().booleanValue() : Boolean.parseBoolean(getAsString());
}
@Override // com.google.gson.JsonElement
Boolean getAsBooleanWrapper() {
return (Boolean) this.value;
}
@Override // com.google.gson.JsonElement
public byte getAsByte() {
return isNumber() ? getAsNumber().byteValue() : Byte.parseByte(getAsString());
}
@Override // com.google.gson.JsonElement
public char getAsCharacter() {
return getAsString().charAt(0);
}
@Override // com.google.gson.JsonElement
public double getAsDouble() {
return isNumber() ? getAsNumber().doubleValue() : Double.parseDouble(getAsString());
}
@Override // com.google.gson.JsonElement
public float getAsFloat() {
return isNumber() ? getAsNumber().floatValue() : Float.parseFloat(getAsString());
}
@Override // com.google.gson.JsonElement
public int getAsInt() {
return isNumber() ? getAsNumber().intValue() : Integer.parseInt(getAsString());
}
@Override // com.google.gson.JsonElement
public long getAsLong() {
return isNumber() ? getAsNumber().longValue() : Long.parseLong(getAsString());
}
@Override // com.google.gson.JsonElement
public Number getAsNumber() {
Object obj = this.value;
return obj instanceof String ? new LazilyParsedNumber((String) obj) : (Number) obj;
}
@Override // com.google.gson.JsonElement
public short getAsShort() {
return isNumber() ? getAsNumber().shortValue() : Short.parseShort(getAsString());
}
@Override // com.google.gson.JsonElement
public String getAsString() {
return isNumber() ? getAsNumber().toString() : isBoolean() ? getAsBooleanWrapper().toString() : (String) this.value;
}
public int hashCode() {
long doubleToLongBits;
if (this.value == null) {
return 31;
}
if (isIntegral(this)) {
doubleToLongBits = getAsNumber().longValue();
} else {
Object obj = this.value;
if (!(obj instanceof Number)) {
return obj.hashCode();
}
doubleToLongBits = Double.doubleToLongBits(getAsNumber().doubleValue());
}
return (int) ((doubleToLongBits >>> 32) ^ doubleToLongBits);
}
public boolean isBoolean() {
return this.value instanceof Boolean;
}
public boolean isNumber() {
return this.value instanceof Number;
}
public boolean isString() {
return this.value instanceof String;
}
void setValue(Object obj) {
if (obj instanceof Character) {
this.value = String.valueOf(((Character) obj).charValue());
} else {
C$Gson$Preconditions.checkArgument((obj instanceof Number) || isPrimitiveOrString(obj));
this.value = obj;
}
}
public JsonPrimitive(Number number) {
setValue(number);
}
public JsonPrimitive(String str) {
setValue(str);
}
public JsonPrimitive(Character ch) {
setValue(ch);
}
JsonPrimitive(Object obj) {
setValue(obj);
}
}