package parse; import com.google.gson.Gson; import java.io.Serializable; public class Pointer implements Serializable { public static final String TYPE = "Pointer"; protected String __type; protected String className; public String objectId; public Pointer() { this.__type = TYPE; this.className = getClass().getSimpleName(); } public Pointer(String className, String objectId) { this.__type = TYPE; this.setClassName(className); this.setObjectId(objectId); } public String get__type() { return __type; } public void set__type(String __type) { this.__type = __type; } public String getClassName() { return this.className; } public void setClassName(String className) { this.className = className; } public String getObjectId() { return this.objectId; } public void setObjectId(String objectId) { this.objectId = objectId; } /** * 将Pointer转换为所需对象 * * @param clazz 转换目标类型 * @return 转换后的对象, 转换失败时为null */ public <T> T parseToObject(Class<T> clazz) { T t = null; Gson gson = new Gson(); try { // 原Pointer对象转为json, 如果用include查询的话, Pointer中除了className还会包含目标对象的数据 String json = gson.toJson(this); // 转为目标对象, 多余的className正好通过转换过滤掉 t = gson.fromJson(json, clazz); } catch (Exception e) { e.printStackTrace(); } return t; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Pointer pointer = (Pointer) o; return !(objectId != null ? !objectId.equals(pointer.objectId) : pointer.objectId != null); } @Override public int hashCode() { return objectId != null ? objectId.hashCode() : 0; } }