package cn.mutils.core.io.serial; import cn.mutils.core.annotation.Ignore; import cn.mutils.core.annotation.PrimitiveType; import cn.mutils.core.json.IJsonItem; import cn.mutils.core.properties.IPropertyItem; import cn.mutils.core.xml.IXmlItem; @SuppressWarnings({"rawtypes", "serial"}) public abstract class Serial<T> implements IJsonItem, IXmlItem, IPropertyItem { /** * Type of of serialization and deserialization */ protected PrimitiveType mType = PrimitiveType.STRING; protected T mValue; public Serial() { } public Serial(T value) { mValue = value; } public T value() { return mValue; } @Ignore public T getValue() { return mValue; } public void setValue(T value) { if (value != null) { mValue = value; } } @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null) { return false; } if (mValue == null) { return false; } if (o instanceof Serial) { return mValue.equals(((Serial) o).value()); } else { return mValue.equals(o); } } @Override public String toString() { return mValue == null ? null : mValue.toString(); } public PrimitiveType getType() { return mType; } public void setType(PrimitiveType type) { mType = type; } }