6.4.1 文法規則
直列化されたストリームは、ストリーム規則を満たす任意のストリームによって表されます。
-
stream:
- magic version contents
-
contents:
- content
contents content
-
content:
- object
blockdata
-
object:
- newObject
newClass
newArray
newString
newClassDesc
prevObject
nullReference
exception
reset
-
newClass:
TC_CLASS classDesc newHandle
-
classDesc:
- newClassDesc
nullReference
(ClassDesc)prevObject // 型 ClassDesc が要求されるオブジェクト
-
superClassDesc:
- classDesc
-
newClassDesc:
TC_CLASSDESC className serialVersionUID newHandle classDescInfo
-
classDescInfo:
- classDescFlags fields classAnnotation superClassDesc
-
className:
(utf)
-
serialVersionUID:
(long)
-
classDescFlags:
(byte) // 終端記号および定数で定義
-
fields:
(short)<count> fieldDesc[count]
-
fieldDesc:
- primitiveDesc
objectDesc
-
primitiveDesc:
- prim_typecode fieldName
-
objectDesc:
- obj_typecode fieldName className1
-
fieldName:
(utf)
-
className1:
- (String)object // フィールドタイプを含む String
-
classAnnotation:
- endBlockData
contents endBlockData // annotateClass で書かれた内容
-
prim_typecode:
`B' // byte
`C' // char
`D' // double
`F' // float
`I' // integer
`J' // long
`S' // short
`Z' // boolean
-
obj_typecode:
`[` // 配列
`L' // オブジェクト
-
newArray:
TC_ARRAY classDesc newHandle (int)<size> values[size]
-
newObject:
TC_OBJECT classDesc newHandle classdata[] // 各クラスのデータ
-
classdata:
- nowrclass //
SC_SERIALIZABLE & classDescFlag &&
// !(SC_WRITE_METHOD & classDescFlags)
wrclass objectAnnotation   // SC_SERIALIZABLE & classDescFlag &&
// SC_WRITE_METHOD & classDescFlags
externalContents // SC_EXTERNALIZABLE & classDescFlag &&
// !(SC_BLOCKDATA & classDescFlags
objectAnnotation // SC_EXTERNALIZABLE & classDescFlag&&
// SC_BLOCKDATA & classDescFlags
-
nowrclass:
- values // クラス記述子のためのフィールド
-
wrclass:
- nowrclass
-
objectAnnotation:
- endBlockData
contents endBlockData // PROTOCOL_VERSION_2 で writeObject または writeExternal
// によって書かれた内容
-
blockdata:
- blockdatashort
blockdatalong
-
blockdatashort:
TC_BLOCKDATA (unsigned byte)<size> (byte)[size]
-
blockdatalong:
TC_BLOCKDATALONG (int)<size> (byte)[size]
-
endBlockData:
TC_ENDBLOCKDATA
-
externalContent: //
readExternal でのみ解析可能
// プリミティブデータ
(bytes)object
-
externalContents: //
PROTOCOL_VERSION_1 で writeExternal によって書かれた
// externalContent
- externalContent
externalContents externalContent
-
newString:
TC_STRING newHandle (utf)
-
prevObject:
TC_REFERENCE (int)handle
-
nullReference:
TC_NULL
-
exception:
TC_EXCEPTION reset (Throwable)object reset
-
magic:
STREAM_MAGIC
-
version:
STREAM_VERSION
-
values: // classDesc によって記述された
// 現在のオブジェクトのサイズと型
-
newHandle: // 直列化または直列化復元されている
// オブジェクトに割り当てられる次の番号
-
reset: // 例外オブジェクトが、前に送信された
// オブジェクトまたは例外のあとに
// 送信されるオブジェクトと
// オーバーラップしないように、破棄される
// 既知のオブジェクトのセット
目次 | 前の項目
| 次の項目
Copyright © 1997-1998 Sun Microsystems, Inc. All Rights Reserved.