⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jmval.java.svn-base

📁 MSN客服自动化机器人
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
package jm.util;

import java.io.EOFException;
import java.math.BigDecimal;

/**
 * 基本类型保存工具<BR>
 * <BR>
 * 師偵帵偡僨乕僞宆偺崁栚傪曐帩偡傞丅<BR>
 * 丂丒java婎杮宆乮byte丄short丄int丄long丄float丄double丄char丄boolean乯<BR>
 * 丂丒java.lang.String<BR>
 * 丂丒byte 攝楍<BR>
 * 丂丒java.lang.String 攝楍<BR>
 * 丂丒java.util.Date<BR>
 * 丂丒JM2DArray<BR>
 * <BR>
 * 杮僆僽僕僃僋僩偺崁栚抣傪庢摼偡傞帪偵桳岠側僨乕僞宆曄姺偼師偺捠傝丅<BR>
 * <BR>
 * 丂<tt>丂丂丂丂丂丂丂丂丂</tt>崁栚抣傪庢摼偡傞帪偵巜掕偡傞僨乕僞宆<BR>
 * 丂<tt>崁栚僨乕僞宆丂丂丂</tt>嘆 嘇 嘊 嘋 嘍 嘐 嘑 嘒 嘓 嘔 嘕 嘖 嘗<BR>
 * 丂<tt>嘆倐倷倲倕丂丂丂丂</tt>仜 仮 仮 仮 仮 仮 亊 亊 仜 亊 亊 亊 亊<BR>
 * 丂<tt>嘇倱倛倧倰倲丂丂丂</tt>仮 仜 仮 仮 仮 仮 亊 亊 仜 亊 亊 亊 亊<BR>
 * 丂<tt>嘊倝値倲丂丂丂丂丂</tt>仮 仮 仜 仮 仮 仮 亊 亊 仜 亊 亊 亊 亊<BR>
 * 丂<tt>嘋倢倧値倗丂丂丂丂</tt>仮 仮 仮 仜 仮 仮 亊 亊 仜 亊 亊 亊 亊<BR>
 * 丂<tt>嘍倖倢倧倎倲丂丂丂</tt>仮 仮 仮 仮 仜 仮 亊 亊 仜 亊 亊 亊 亊<BR>
 * 丂<tt>嘐倓倧倳倐倢倕丂丂</tt>仮 仮 仮 仮 仮 仜 亊 亊 仜 亊 亊 亊 亊<BR>
 * 丂<tt>嘑們倛倎倰丂丂丂丂</tt>亊 亊 亊 亊 亊 亊 仜 亊 仜 亊 亊 亊 亊<BR>
 * 丂<tt>嘒倐倧倧倢倕倎値丂</tt>亊 亊 亊 亊 亊 亊 亊 仜 仜 亊 亊 亊 亊<BR>
 * 丂<tt>嘓俽倲倰倝値倗丂丂</tt>亊 亊 亊 亊 亊 亊 亊 亊 仜 亊 亊 亊 亊<BR>
 * 丂<tt>嘔倐倷倲倕乵乶丂丂</tt>亊 亊 亊 亊 亊 亊 亊 亊 仦 仜 亊 亊 亊<BR>
 * 丂<tt>嘕俢倎倲倕       </tt>亊 亊 亊 亊 亊 亊 亊 亊 仦 亊 仜 亊 亊<BR>
 * 丂<tt>嘖JM2DArray丂丂丂</tt>亊 亊 亊 亊 亊 亊 亊 亊 仦 亊 亊 仜 亊<BR>
 * <BR>
 * 丂仮 丗 偙偺僨乕僞宆曄姺偼壜擻偩偑丄抣偑娵傔傜傟傞応崌偑偁傞丅<BR>
 * 丂亊 丗 偙偺僨乕僞宆曄姺偵傛傝<tt>ClassCastException</tt>偑憲弌偝傟傞丅<BR>
 * 丂仦 丗 偙偺僨乕僞宆曄姺偼壜擻偩偑丄柍堄枴側抣偑曉媝偝傟傞応崌偑偁傞丅<BR>
 * <BR>
 * null 抣傪帩偮師偺 java 婎杮宆僶儕傾儞僩崁栚僆僽僕僃僋僩掕悢傪採嫙偡傞丅<BR>
 * 丂BYTE_NULL丄SHORT_NULL丄INT_NULL丄LONG_NULL丄FLOAT_NULL丄DOUBLE_NULL丄<BR>
 * 丂CHAR_NULL丄BOOLEAN_NULL<BR>
 * 偙傟傜偼丄偍傕偵俢俛僇儔儉抣偵 NULL 傪愝掕偡傞嵺偵巊梡偝傟傞丅<BR>
 * <BR>
 * null 抣偑愝掕偝傟偨僶儕傾儞僩崁栚僆僽僕僃僋僩偐傜抣傪庢摼偡傞偲丄巜掕偟偨 僨乕僞宆偵墳偠偰師偺抣偑摼傜傟傞丅<BR>
 * 丂byte丄short丄int丄long丄float丄double 傪巜掕偟偨応崌丄0<BR>
 * 丂char 傪巜掕偟偨応崌丄'\0'<BR>
 * 丂boolean 傪巜掕偟偨応崌丄false<BR>
 * 丂String 傪巜掕偟偨応崌丄嬻暥帤<BR>
 * 丂byte[] 傪巜掕偟偨応崌丄梫慺悢 0 偺 byte 攝楍<BR>
 * 丂Object[] 傪巜掕偟偨応崌丄梫慺悢 0 偺 String 攝楍<BR>
 * 丂Date 傪巜掕偟偨応崌丄1970/01/01 00:00:00 GMT 傪帵偡 java.util.Date<BR>
 * 丂JM2DArray 傪巜掕偟偨応崌丄梫慺悢 0 偺 JM2DArray 攝楍<BR>
 * 幚嵺偵 null 抣偑偳偆偐偼 isNull() 儊僜僢僪偵傛傝抦傞偙偲偑偱偒傞丅<BR>
 *
 */
public class JMVal implements Cloneable {
	private static final String CLASS_NAME = "JMVal";

	// ////////////////////////////////////////////////////////////////////////
	// 僼傿乕儖僪愰尵

	/** 崁栚抣偑 null 偱偁傞偙偲傪帵偡僶儕傾儞僩僞僀僾僆僼僙僢僩抣 */
	private static final int TYPE_NULL = 24;

	/** byte 宆傪帵偡抣 */
	public static final int TYPE_BYTE = 0;

	/** short 宆傪帵偡抣 */
	public static final int TYPE_SHORT = 1;

	/** int 宆傪帵偡抣 */
	public static final int TYPE_INT = 2;

	/** long 宆傪帵偡抣 */
	public static final int TYPE_LONG = 3;

	/** float 宆傪帵偡抣 */
	public static final int TYPE_FLOAT = 4;

	/** double 宆傪帵偡抣 */
	public static final int TYPE_DOUBLE = 5;

	/** char 宆傪帵偡抣 */
	public static final int TYPE_CHAR = 6;

	/** boolean 宆傪帵偡抣 */
	public static final int TYPE_BOOLEAN = 7;

	/** String 宆傪帵偡抣 */
	public static final int TYPE_STRING = 8;

	/** byte[] 宆傪帵偡抣 */
	public static final int TYPE_BYTEARRAY = 9;

	/** BigDecimal 宆傪帵偡抣 */
	public static final int TYPE_BIGDECIMAL = 10;

	/** java.util.Date 宆傪帵偡抣 */
	public static final int TYPE_DATE = 11;

	/** java.util.Time 宆傪帵偡抣 */
	public static final int TYPE_TIME = 12;

	/** java.util.Timestamp 宆傪帵偡抣 */
	public static final int TYPE_TIMESTAMP = 13;

	/** JM2DArray 宆傪帵偡抣 */
	public static final int TYPE_JM2DARRAY = 14;

	/** Object 宆傪帵偡抣 */
	public static final int TYPE_OBJECT = 15;

	/** byte 宆 null 抣崁栚 */
	public static final JMVal BYTE_NULL = new JMVal(new Byte((byte) 0),
			TYPE_BYTE + TYPE_NULL);

	/** short 宆 null 抣崁栚 */
	public static final JMVal SHORT_NULL = new JMVal(new Short((short) 0),
			TYPE_SHORT + TYPE_NULL);

	/** int 宆 null 抣崁栚 */
	public static final JMVal INT_NULL = new JMVal(new Integer(0), TYPE_INT
			+ TYPE_NULL);

	/** long 宆 null 抣崁栚 */
	public static final JMVal LONG_NULL = new JMVal(new Long(0L), TYPE_LONG
			+ TYPE_NULL);

	/** float 宆 null 抣崁栚 */
	public static final JMVal FLOAT_NULL = new JMVal(new Float(0.0F),
			TYPE_FLOAT + TYPE_NULL);

	/** double 宆 null 抣崁栚 */
	public static final JMVal DOUBLE_NULL = new JMVal(new Double(0.0D),
			TYPE_DOUBLE + TYPE_NULL);

	/** char 宆 null 抣崁栚 */
	public static final JMVal CHAR_NULL = new JMVal(new Character('\0'),
			TYPE_CHAR + TYPE_NULL);

	/** boolean 宆 null 抣崁栚 */
	public static final JMVal BOOLEAN_NULL = new JMVal(new Boolean(false),
			TYPE_BOOLEAN + TYPE_NULL);

	private Object poVariant; // 僶儕傾儞僩抣僆僽僕僃僋僩

	private byte pyType; // 僶儕傾儞僩僞僀僾

	// ////////////////////////////////////////////////////////////////////////
	// 僐儞僗僩儔僋僞

	/**
	 * byte 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param ayValue
	 *            byte 宆崁栚抣
	 */
	public JMVal(byte ayValue) {
		poVariant = new Byte(ayValue);
		pyType = TYPE_BYTE;
	}

	/**
	 * short 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param ahValue
	 *            short 宆崁栚抣
	 */
	public JMVal(short ahValue) {
		poVariant = new Short(ahValue);
		pyType = TYPE_SHORT;
	}

	/**
	 * int 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param aiValue
	 *            int 宆崁栚抣
	 */
	public JMVal(int aiValue) {
		poVariant = new Integer(aiValue);
		pyType = TYPE_INT;
	}

	/**
	 * long 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param alValue
	 *            long 宆崁栚抣
	 */
	public JMVal(long alValue) {
		poVariant = new Long(alValue);
		pyType = TYPE_LONG;
	}

	/**
	 * float 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param afValue
	 *            float 宆崁栚抣
	 */
	public JMVal(float afValue) {
		poVariant = new Float(afValue);
		pyType = TYPE_FLOAT;
	}

	/**
	 * double 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param adValue
	 *            double 宆崁栚抣
	 */
	public JMVal(double adValue) {
		poVariant = new Double(adValue);
		pyType = TYPE_DOUBLE;
	}

	/**
	 * char 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param acValue
	 *            char 宆崁栚抣
	 */
	public JMVal(char acValue) {
		poVariant = new Character(acValue);
		pyType = TYPE_CHAR;
	}

	/**
	 * boolean 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param abValue
	 *            boolean 宆崁栚抣
	 */
	public JMVal(boolean abValue) {
		poVariant = new Boolean(abValue);
		pyType = TYPE_BOOLEAN;
	}

	/**
	 * String 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param asValue
	 *            String 宆崁栚抣
	 */
	public JMVal(String asValue) {
		pyType = TYPE_STRING;
		if (asValue == null) {
			pyType += TYPE_NULL;
			asValue = "";
		}
		poVariant = asValue;
	}

	/**
	 * byte[] 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param ayValues
	 *            byte[] 宆崁栚抣
	 */
	public JMVal(byte[] ayValues) {
		pyType = TYPE_BYTEARRAY;
		if (ayValues == null) {
			pyType += TYPE_NULL;
			ayValues = new byte[0];
		}
		poVariant = ayValues;
	}

	/**
	 * java.util.Date 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param adtValue
	 *            java.util.Date 宆崁栚抣
	 */
	public JMVal(java.util.Date adtValue) {
		pyType = TYPE_DATE;
		if (adtValue == null) {
			pyType += TYPE_NULL;
			adtValue = new java.util.Date(0L);
		}
		poVariant = adtValue;
	}

	/**
	 * java.sql.Time 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param adtValue
	 *            java.sql.Time 宆崁栚抣
	 */
	public JMVal(java.sql.Time adtValue) {
		pyType = TYPE_TIME;
		if (adtValue == null) {
			pyType += TYPE_NULL;
		}
		poVariant = adtValue;
	}

	/**
	 * java.sql.Timestamp 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param adtValue
	 *            java.sql.Timestamp 宆崁栚抣
	 */
	public JMVal(java.sql.Timestamp adtValue) {
		pyType = TYPE_TIMESTAMP;
		if (adtValue == null) {
			pyType += TYPE_NULL;
		}
		poVariant = adtValue;
	}

	/**
	 * BigDecimal 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param adtValue
	 *            BigDecimal 宆崁栚抣
	 */
	public JMVal(BigDecimal adtValue) {
		pyType = TYPE_BIGDECIMAL;
		if (adtValue == null) {
			pyType += TYPE_NULL;
		}
		poVariant = adtValue;
	}

	/**
	 * JM2DArray 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param aoValue
	 *            JM2DArray 宆崁栚抣
	 */
	public JMVal(JM2DArray aoValue) {
        pyType = TYPE_JM2DARRAY;
		if (aoValue == null) {
			pyType += TYPE_NULL;
			aoValue = new JM2DArray(false);
		}
		poVariant = aoValue;
	}

	/**
	 * Object 宆偺崁栚抣傪曐帩偡傞応崌偺僐儞僗僩儔僋僞
	 *
	 * @param ayValue
	 *            Object 宆崁栚抣
	 */
	public JMVal(Object aoValue) {
		poVariant = aoValue;
		pyType = TYPE_OBJECT;
	}

	/**
	 * 偙偺僆僽僕僃僋僩偲傎偐偺僆僽僕僃僋僩偑摍偟偄偐偳偆偐傪帵偟傑偡丅 equals 儊僜僢僪偼丄null
	 * 埲奜偺僆僽僕僃僋僩嶲徠偱偺摨抣娭學傪幚憰偟傑偡丅
	 *
	 * 斀幩惈 (reflexive): null 埲奜偺嶲徠抣 x 偵偮偄偰丄x.equals(x) 偼 true 傪曉偡 懳徧惈
	 * (symmetric): null 埲奜偺嶲徠抣 x 偲 y 偵偮偄偰丄x.equals(y) 偼丄y.equals(x) 偑 true
	 * 傪曉偡応崌偩偗 true 傪曉偡 悇堏惈 (transitive): null 埲奜偺嶲徠抣 x丄y丄z 偵偮偄偰丄x.equals(y) 偑
	 * true 傪曉偟丄偐偮 y.equals(z) 偑 true 傪曉偡応崌偵丄x.equals(z) 偼 true 傪曉偡 惍崌惈
	 * (consistent): null 埲奜偺嶲徠抣 x 偍傛傃 y 偵偮偄偰丄x.equals(y) 傪暋悢屇傃弌偡偲忢偵 true
	 * 傪曉偡偐丄忢偵 false 傪曉偡丅偙傟偼丄僆僽僕僃僋僩偵懳偡傞 equals 偵傛傞斾妑偱巊傢傟偨忣曬偑曄峏偝傟偰偄側偄偙偲偑忦審偱偁傞
	 * null 埲奜偺嶲徠抣 x 偵偮偄偰丄x.equals(null) 偼 false 傪曉偡 Object 僋儔僗偺 equals
	 * 儊僜僢僪偼丄傕偭偲傕斾妑偟傗偡偄僆僽僕僃僋僩偺摨抣娭學傪幚憰偟傑偡丅偮傑傝丄null 埲奜偺嶲徠抣 x 偲 y 偵偮偄偰丄偙偺儊僜僢僪偼 x 偲
	 * y 偑摨偠僆僽僕僃僋僩傪嶲徠偡傞 (x == y 偑 true) 応崌偵偩偗 true 傪曉偟傑偡丅
	 *
	 * 捠忢丄偙偺儊僜僢僪傪僆乕僶乕儔僀僪偡傞応崌偼丄hashCode
	 * 儊僜僢僪傪忢偵僆乕僶乕儔僀僪偟偰丄乽摍壙側僆僽僕僃僋僩偼摍壙側僴僢僔儏僐乕僪傪曐帩偡傞昁梫偑偁傞乿偲偄偆 hashCode
	 * 儊僜僢僪偺斈梡婯栺偵廬偆昁梫偑偁傞偙偲偵棷堄偟偰偔偩偝偄丅
	 *
	 *
	 * 僷儔儊乕僞: obj - 斾妑懳徾偺嶲徠僆僽僕僃僋僩 栠傝抣: obj 堷悢偵巜掕偝傟偨僆僽僕僃僋僩偲偙偺僆僽僕僃僋僩偑摍偟偄応崌偼
	 * true丄偦偆偱側偄応崌偼 false
	 */
	public boolean equals(Object obj) {
		if (JMUtility.compare(obj, this) != 0) {
			return false;
		}
		return true;
	}

	/**
	 * 偙偺僆僽僕僃僋僩偺僐僺乕傪嶌惉偟偰曉偟傑偡丅乽僐僺乕乿偺惓妋側堄枴崌偄偼丄僆僽僕僃僋僩偺僋儔僗偵傛偭偰堎側傝傑偡丅堦斒揑偵偼丄擟堄偺僆僽僕僃僋僩
	 * x 偵偮偄偰丄師偺幃
	 *
	 * x.clone() != x偑 true 偱偁傝丄師偺幃
	 *
	 * x.clone().getClass() == x.getClass()傕 true
	 * 偱偁傞偙偲偱偡偑丄偙傟傜傕愨懳揑側梫審偱偼偁傝傑偣傫丅傑偨師偺幃
	 *
	 * x.clone().equals(x)傕捠忢 true 偵側傝傑偡偑丄偙傟傕愨懳揑側梫審偱偼偁傝傑偣傫丅 捠忢丄super.clone
	 * 傪屇傃弌偡偙偲偱曉偝傟傞僆僽僕僃僋僩傪庢摼偱偒傑偡丅僋儔僗偍傛傃偦偺僗乕僷乕僋儔僗偡傋偰 (Object 傪彍偔)
	 * 偑偙偺婯懃偵廬偆応崌丄x.clone().getClass() == x.getClass() 偑惉棫偟傑偡丅
	 *
	 * 捠忢丄偙偺儊僜僢僪偵傛傝曉偝傟傞僆僽僕僃僋僩偼丄偙偺僆僽僕僃僋僩 (暋惢偝傟偰偄傞) 偐傜撈棫偟偰偄傞昁梫偑偁傝傑偡丅
	 * 偙偺撈棫惈傪払惉偡傞偨傔丄super.clone 偑曉偡僆僽僕僃僋僩偺僼傿乕儖僪傪 1 偮埲忋 (僆僽僕僃僋僩偑曉偡慜偵)
	 * 曄峏偡傞偙偲偑昁梫偵側傞応崌偑偁傝傑偡丅
	 * 偙傟偼丄捠忢丄暋惢偡傞僆僽僕僃僋僩偺撪晹乽怺憌峔憿乿傪峔惉偡傞壜曄僆僽僕僃僋僩偺僐僺乕丄偍傛傃偙傟傜偺僆僽僕僃僋僩傊偺嶲徠傪僐僺乕傊偺嶲徠偵抲偒姺偊傞偙偲傪堄枴偟傑偡丅
	 * 僋儔僗偵僾儕儈僥傿僽僼傿乕儖僪傑偨偼晄曄僆僽僕僃僋僩傊偺嶲徠偩偗偑娷傑傟傞応崌丄捠忢丄super.clone
	 * 偵傛傝曉偝傟傞僆僽僕僃僋僩撪偺僼傿乕儖僪傪曄峏偡傞昁梫偼偁傝傑偣傫丅
	 *
	 * Object 僋儔僗偺 clone 儊僜僢僪偼丄摿掕偺暋惢張棟傪幚峴偟傑偡丅傑偢丄偙偺僆僽僕僃僋僩偺僋儔僗偑 Cloneable
	 * 僀儞僞僼僃乕僗傪幚憰偟偰偄側偄応崌偼丄 CloneNotSupportedException 偑僗儘乕偝傟傑偡丅攝楍偼偡傋偰丄僀儞僞僼僃乕僗
	 * Cloneable 傪幚憰偟偰偄傞傕偺偲尒側偝傟傞偙偲偵拲堄偟偰偔偩偝偄丅
	 * 幚憰偟偰偄側偄応崌丄偙偺儊僜僢僪偼偙偺僆僽僕僃僋僩偺僋儔僗偺怴偟偄僀儞僗僞儞僗傪惗惉偟丄偦偺僼傿乕儖僪傪偡傋偰丄偙偺僆僽僕僃僋僩偺懳墳偡傞奺僼傿乕儖僪偺撪梕偱弶婜壔偟傑偡丅
	 * 偙傟偼戙擖偲摨條偱丄僼傿乕儖僪偺撪梕帺恎偑暋惢偝傟傞偺偱偼偁傝傑偣傫丅偮傑傝偙偺儊僜僢僪偼丄僆僽僕僃僋僩偺乽僔儍儘乕僐僺乕乿傪惗惉偟傑偡偑丄乽僨傿乕僾僐僺乕乿偼惗惉偟傑偣傫丅
	 *
	 * 僋儔僗 Object 帺懱偼丄Cloneable 僀儞僞僼僃乕僗傪幚憰偟側偄偨傔丄僋儔僗偑 Object 偱偁傞 clone
	 * 儊僜僢僪傪屇傃弌偡偲丄幚峴帪偵椺奜偑僗儘乕偝傟傑偡丅
	 *
	 *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -