jimu-decompiled/sources/com/google/common/base/Equivalence.java
2025-05-13 19:24:51 +02:00

120 lines
2.9 KiB
Java

package com.google.common.base;
import java.io.Serializable;
/* loaded from: classes.dex */
public abstract class Equivalence<T> {
static final class Equals extends Equivalence<Object> implements Serializable {
static final Equals a = new Equals();
Equals() {
}
private Object readResolve() {
return a;
}
@Override // com.google.common.base.Equivalence
protected boolean a(Object obj, Object obj2) {
return obj.equals(obj2);
}
@Override // com.google.common.base.Equivalence
protected int a(Object obj) {
return obj.hashCode();
}
}
static final class Identity extends Equivalence<Object> implements Serializable {
static final Identity a = new Identity();
Identity() {
}
private Object readResolve() {
return a;
}
@Override // com.google.common.base.Equivalence
protected int a(Object obj) {
return System.identityHashCode(obj);
}
@Override // com.google.common.base.Equivalence
protected boolean a(Object obj, Object obj2) {
return false;
}
}
public static final class Wrapper<T> implements Serializable {
private static final long serialVersionUID = 0;
private final Equivalence<? super T> equivalence;
private final T reference;
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Wrapper)) {
return false;
}
Wrapper wrapper = (Wrapper) obj;
if (this.equivalence.equals(wrapper.equivalence)) {
return this.equivalence.b(this.reference, wrapper.reference);
}
return false;
}
public T get() {
return this.reference;
}
public int hashCode() {
return this.equivalence.b(this.reference);
}
public String toString() {
return this.equivalence + ".wrap(" + this.reference + ")";
}
private Wrapper(Equivalence<? super T> equivalence, T t) {
Preconditions.a(equivalence);
this.equivalence = equivalence;
this.reference = t;
}
}
protected Equivalence() {
}
public static Equivalence<Object> a() {
return Equals.a;
}
protected abstract int a(T t);
protected abstract boolean a(T t, T t2);
public final boolean b(T t, T t2) {
if (t == t2) {
return true;
}
if (t == null || t2 == null) {
return false;
}
return a(t, t2);
}
public final int b(T t) {
if (t == null) {
return 0;
}
return a(t);
}
public static Equivalence<Object> b() {
return Identity.a;
}
}