看一下源代码
生成对象的
private Object readOrdinaryObject(boolean unshared)
throws IOException
{
...
obj = desc.isInstantiable() ? desc.newInstance() : null;
...
return obj;
}
Object newInstance()
throws InstantiationException, InvocationTargetException,
UnsupportedOperationException
{
requireInitialized();
if (cons != null) {
try {
return cons.newInstance();
} catch (IllegalAccessException ex) {
throw new InternalError(ex);
}
} else {
throw new UnsupportedOperationException();
}
}
生成构造函数cons源码如下
private Object readOrdinaryObject(boolean unshared)
throws IOException
{
...
ObjectStreamClass desc = readClassDesc(false);
...
obj = desc.isInstantiable() ? desc.newInstance() : null;
...
return obj;
}
private ObjectStreamClass readClassDesc(boolean unshared)
throws IOException
{
byte tc = bin.peekByte();
ObjectStreamClass descriptor;
switch (tc) {
case TC_NULL:
descriptor = (ObjectStreamClass) readNull();
break;
...
case TC_CLASSDESC:
descriptor = readNonProxyDesc(unshared