Initial commit
This commit is contained in:
190
sources/com/google/gson/JsonPrimitive.java
Normal file
190
sources/com/google/gson/JsonPrimitive.java
Normal file
@@ -0,0 +1,190 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user