📄 jmval.java
字号:
* 栠傝抣: 偙偺僀儞僗僞儞僗偺暋惢 椺奜: CloneNotSupportedException - 僆僽僕僃僋僩偺僋儔僗偑 Cloneable
* 僀儞僞僼僃乕僗傪僒億乕僩偟偰偄側偄応崌丅clone 儊僜僢僪傪僆乕僶乕儔僀僪偟偨僒僽僋儔僗傕丄
* 僀儞僗僞儞僗傪暋惢偱偒側偄偙偲傪帵偡偨傔偵偙偺椺奜傪僗儘乕偡傞偙偲偑偁傞
*/
public Object clone() throws CloneNotSupportedException {
JMVal temp = null;
poVariant = null;
return temp;
}
/**
* 擖椡僗僩儕乕儉偐傜捈楍壔僨乕僞傪撉傒崬傫偱僆僽僕僃僋僩傪暅尦偡傞偨傔偺 僐儞僗僩儔僋僞
*
* @param aoIn
* 擖椡僗僩儕乕儉
* @throws Exception
* 僨乕僞撉傒崬傒拞偵廔抂偵払偟偨応崌丄 擖弌椡僄儔乕偑敪惗偟偨応崌丄 僆僽僕僃僋僩忬懺偑晄惓偺応崌
*/
public JMVal(JMInputStream aoStream) throws Exception {
pyType = TYPE_JM2DARRAY;
deserializeFrom(aoStream);
}
// ////////////////////////////////////////////////////////////////////////
// public 儊僜僢僪
/**
* 曐帩偟偰偄傞崁栚抣偑 null 偐偳偆偐傪曉偡丅
*
* @return null 抣偺応崌 true丄偦偆偱側偗傟偽 false
*/
public boolean isNull() {
return (pyType >= TYPE_NULL);
}
/**
* 曐帩偟偰偄傞崁栚抣偺僨乕僞宆傪曉偡丅
*
* @return 僨乕僞宆傪帵偡抣
*/
public int getDataType() {
return (pyType >= TYPE_NULL) ? pyType - TYPE_NULL : pyType;
}
/**
* 崁栚抣傪 byte 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮byte 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public byte getByteValue() throws ClassCastException {
return ((Number) poVariant).byteValue();
}
/**
* 崁栚抣傪 short 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮short 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public short getShortValue() throws ClassCastException {
return ((Number) poVariant).shortValue();
}
/**
* 崁栚抣傪 int 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮int 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public int getIntValue() throws ClassCastException {
return ((Number) poVariant).intValue();
}
/**
* 崁栚抣傪 long 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮long 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public long getLongValue() throws ClassCastException {
return ((Number) poVariant).longValue();
}
/**
* 崁栚抣傪 float 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮float 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public float getFloatValue() throws ClassCastException {
return ((Number) poVariant).floatValue();
}
/**
* 崁栚抣傪 double 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮double 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public double getDoubleValue() throws ClassCastException {
return ((Number) poVariant).doubleValue();
}
/**
* 崁栚抣傪 char 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮char 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public char getCharValue() throws ClassCastException {
return ((Character) poVariant).charValue();
}
/**
* 崁栚抣傪 boolean 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮boolean 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public boolean getBooleanValue() throws ClassCastException {
return ((Boolean) poVariant).booleanValue();
}
/**
* 崁栚抣傪 String 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮String 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public String getStringValue() throws ClassCastException {
if (pyType != TYPE_STRING)
return ""+poVariant;
return poVariant.toString();
}
/**
* 崁栚抣傪 byte[] 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮byte[] 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public byte[] getByteArrayValue() throws ClassCastException {
if (pyType != TYPE_BYTEARRAY)
return null;
return (byte[]) poVariant;
}
/**
* 崁栚抣傪 Object[] 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮Object[] 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
// public Object[] getObjectArrayValue ()
// throws ClassCastException
// {
// if ( pyType >= this.t )
// return null ;
// return ( Object[] ) poVariant ;
// }
/**
* 崁栚抣傪 Object 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮Object 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public BigDecimal getBigDecimalValue() throws ClassCastException {
if (pyType != TYPE_BIGDECIMAL)
return null;
return (BigDecimal)poVariant;
}
/**
* 崁栚抣傪 Object 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮Object 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public Object getObjectValue() throws ClassCastException {
if (pyType != TYPE_OBJECT)
return null;
return poVariant;
}
/**
* 崁栚抣傪 java.util.Date 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮java.util.Date 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public java.util.Date getDateValue() throws ClassCastException {
if (pyType != TYPE_DATE)
return null;
return (java.util.Date) poVariant;
}
/**
* 崁栚抣傪 java.sql.Time 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮java.sql.Time 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public java.sql.Time getTimeValue() throws ClassCastException {
if (pyType != TYPE_TIME)
return null;
return (java.sql.Time) poVariant;
}
/**
* 崁栚抣傪 java.util.Date 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮java.util.Date 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public java.sql.Timestamp getTimestampValue() throws ClassCastException {
if (pyType != TYPE_TIMESTAMP)
return null;
return (java.sql.Timestamp) poVariant;
}
/**
* 崁栚抣傪 JM2DArray 宆偲偟偰曉偡丅
*
* @return 崁栚抣乮JM2DArray 宆乯
* @throws ClassCastException
* 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌
*/
public JM2DArray getJM2DArrayValue() throws ClassCastException {
if (poVariant instanceof JM2DArray)
return (JM2DArray) poVariant;
return null;
}
/**
* 僆僽僕僃僋僩偑曐帩偡傞崁栚抣傪捈楍壔偟偰弌椡僗僩儕乕儉偵彂偒崬傓丅
*
* @param aoStream
* 弌椡僗僩儕乕儉
* @throws Exception
* 擖弌椡僄儔乕偑敪惗偟偨応崌丄 晄惓側僨乕僞宆曄姺偑巜掕偝傟偨応崌丄 僆僽僕僃僋僩忬懺偑晄惓偺応崌
*/
public void serializeTo(JMOutputStream aoStream) throws Exception {
final String sMethod = "serializeTo";
try {
aoStream.writeByte(pyType);
int iType = (pyType >= TYPE_NULL) ? pyType - TYPE_NULL : pyType;
if (iType == TYPE_STRING||iType == TYPE_BIGDECIMAL)
aoStream.writeUTF(poVariant.toString());
else if (iType == TYPE_INT)
aoStream.writeInt(getIntValue());
else if (iType == TYPE_BOOLEAN)
aoStream.writeBoolean(getBooleanValue());
else if (iType == TYPE_JM2DARRAY) {
aoStream.writePrefix(JMInputStream.PREFIX_OF_JM2DARRAY);
((JM2DArray) poVariant).serializeTo(aoStream);
} else if (iType == TYPE_BYTEARRAY) {
byte[] yValues = (byte[]) poVariant;
aoStream.writePrefix(JMInputStream.PREFIX_OF_BYTEARRAY);
aoStream.writeRawInt(yValues.length);
if (yValues.length > 0)
aoStream.write(yValues, 0, yValues.length);
} else if (iType == TYPE_DATE||iType == TYPE_TIME||iType == TYPE_TIMESTAMP) {
aoStream.writePrefix(JMInputStream.PREFIX_OF_DATE);
java.util.Date dtValue = (java.util.Date) poVariant;
aoStream.writeRawLong(dtValue.getTime());
} else if (iType == TYPE_LONG)
aoStream.writeLong(getLongValue());
else if (iType == TYPE_DOUBLE)
aoStream.writeDouble(getDoubleValue());
else if (iType == TYPE_CHAR)
aoStream.writeChar((int) getCharValue());
else if (iType == TYPE_FLOAT)
aoStream.writeFloat(getFloatValue());
else if (iType == TYPE_BYTE)
aoStream.writeByte((int) getByteValue());
else if (iType == TYPE_SHORT)
aoStream.writeShort((int) getShortValue());
else {
String sDesc = "僨乕僞宆[" + pyType + "]偑晄惓偱偡";
throw new IllegalStateException(sDesc);
}
aoStream.flush();
} catch (Exception e) {
// 椺奜傪憲弌偡傞
throw new Exception(CLASS_NAME + "." + sMethod, e);
}
}
/**
* 僆僽僕僃僋僩偺撪梕傪昞尰偡傞暥帤楍傪曉偡丅
*
* @return 僆僽僕僃僋僩撪梕暥帤楍
*/
public String toString() {
StringBuffer zBuf = new StringBuffer();
// zBuf.append ( CLASS_NAME ) ;
// zBuf.append ( "[" ) ;
// zBuf.append ( pyType ) ;
// zBuf.append ( ", " ) ;
zBuf.append(poVariant.toString());
// zBuf.append ( "]" ) ;
return zBuf.toString();
}
// ////////////////////////////////////////////////////////////////////////
// private 僐儞僗僩儔僋僞
/**
* 奺庬僨乕僞宆偺 null 崁栚抣傪愝掕偡傞応崌偺僐儞僗僩儔僋僞
*
* @param aoValue
* 僶儕傾儞僩抣
* @param aiType
* 僶儕傾儞僩僞僀僾
*/
private JMVal(Object aoValue, int aiType) {
poVariant = aoValue;
pyType = (byte) aiType;
}
// ////////////////////////////////////////////////////////////////////////
// private 儊僜僢僪
/**
* 擖椡僗僩儕乕儉偐傜僆僽僕僃僋僩傪捈楍壔偟偨僨乕僞傪撉傒崬傒丄僆僽僕僃僋僩 傪暅尦偡傞丅
*
* @param aoStream
* 擖椡僗僩儕乕儉
* @throws Exception
* 僨乕僞撉傒崬傒拞偵廔抂偵払偟偨応崌丄 擖弌椡僄儔乕偑敪惗偟偨応崌丄 擖椡僗僩儕乕儉偺撪梕偑晄惓偺応崌
*/
private void deserializeFrom(JMInputStream aoStream) throws Exception {
final String sMethod = "deserializeFrom";
try {
pyType = aoStream.readByte();
int iType = (pyType >= TYPE_NULL) ? pyType - TYPE_NULL : pyType;
if (iType == TYPE_STRING)
poVariant = aoStream.readUTF();
else if (iType == TYPE_INT)
poVariant = new Integer(aoStream.readInt());
else if (iType == TYPE_BOOLEAN)
poVariant = new Boolean(aoStream.readBoolean());
else if (iType == TYPE_JM2DARRAY) {
byte yPrefix = aoStream.readPrefix();
if (yPrefix != JMInputStream.PREFIX_OF_JM2DARRAY) {
String sDesc = "僨乕僞慜抲僐乕僪[" + yPrefix + "]偑晄惓偱偡";
throw new IllegalArgumentException(sDesc);
}
poVariant = new JM2DArray(aoStream);
} else if (iType == TYPE_BYTEARRAY) {
byte yPrefix = aoStream.readPrefix();
if (yPrefix != JMInputStream.PREFIX_OF_BYTEARRAY) {
String sDesc = "僨乕僞慜抲僐乕僪[" + yPrefix + "]偑晄惓偱偡";
throw new IllegalArgumentException(sDesc);
}
byte[] yValues = new byte[aoStream.readRawInt()];
if (yValues.length > 0) {
int iBytes = aoStream.read(yValues, 0, yValues.length);
if (iBytes < yValues.length)
throw new EOFException();
}
poVariant = yValues;
} else if (iType == TYPE_DATE) {
byte yPrefix = aoStream.readPrefix();
if (yPrefix != JMInputStream.PREFIX_OF_DATE) {
String sDesc = "僨乕僞慜抲僐乕僪[" + yPrefix + "]偑晄惓偱偡";
throw new IllegalArgumentException(sDesc);
}
poVariant = new java.util.Date(aoStream.readRawLong());
} else if (iType == TYPE_LONG)
poVariant = new Long(aoStream.readLong());
else if (iType == TYPE_DOUBLE)
poVariant = new Double(aoStream.readDouble());
else if (iType == TYPE_CHAR)
poVariant = new Character(aoStream.readChar());
else if (iType == TYPE_FLOAT)
poVariant = new Float(aoStream.readFloat());
else if (iType == TYPE_BYTE)
poVariant = new Byte(aoStream.readByte());
else if (iType == TYPE_SHORT)
poVariant = new Short(aoStream.readShort());
else {
String sDesc = "僶儕傾儞僩僞僀僾[" + pyType + "]偑晄惓偱偡";
throw new IllegalArgumentException(sDesc);
}
} catch (Exception e) {
// 椺奜傪憲弌偡傞
throw new Exception(CLASS_NAME + "." + sMethod, e);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -