对象的保存和加载过程
保存和加载对象
保存文件名对象负载文件名对象
保存了什么信息?
在mat文件中保存对象会保存:
对象类的全名,包括任何包限定符
动态特性值
在类的第一个对象保存到mat文件时,类定义的所有属性默认值。
所有属性的名称和值,但有以下例外:
如果属性的当前值与类定义中指定的默认值相同,则不保存属性。
属性的
瞬态
,常数
,或依赖
属性设置为真正的
.
有关属性属性的描述,请参见指定属性属性
要保存图形对象,请参见savefig
.
属性数据如何加载?
当从mat文件加载对象时,负载
函数恢复对象。
负载
创建一个新对象。如果这个班
ConstructOnLoad
属性设置为真正的
,负载
调用不带参数的类构造函数。否则,负载
不调用类构造函数。负载
将保存的属性值分配给对象属性。这些赋值要经过类定义的任何属性验证。然后调用类定义的任何属性集方法,(除了依赖
,常数
,或瞬态
属性,这些属性没有被保存或加载)。负载
将保存在mat文件中的默认值分配给未保存的属性,因为这些属性在保存时被设置为默认值。这些赋值导致调用类定义的属性集方法。如果正在加载的对象的属性包含对象,则
负载
创建同一个类的新对象并将其赋值给属性。如果属性中包含的对象是句柄对象,则该属性包含同一个类的新句柄对象。
MATLAB®调用属性集方法,以确保在类定义已更改的情况下,属性值仍然有效。
加载过程中的错误
如果类的新版本删除、重命名或更改属性的验证,负载
在试图设置已更改或已删除的属性时,会生成错误。
当从文件加载对象时发生错误,MATLAB会执行以下操作之一:
在结构体
传给loadobj
方法时,字段名与属性名对应。字段值是相应属性的保存值。
如果保存的对象来自多个具有同名私有属性的超类,则结构体
只包含最直接超类的属性值。
有关如何实现的信息saveobj
而且loadobj
方法,请参阅修改“保存和加载过程”.
属性验证的更改
如果类定义更改了属性验证,使得加载的属性值不再有效,MATLAB会用当前定义的默认值替换该属性。类可以定义一个loadobj
方法或转换器方法,以提供类版本之间的兼容性。
有关属性验证的信息,请参见验证属性值