修改保存和加载过程的主要原因是支持类的向后和向前兼容性。金宝app考虑修改保存和加载过程,当你:
重命名类
删除属性
定义句柄对象的循环引用,初始化顺序很重要
必须使用参数调用构造函数,因此不能使用ConstructOnLoad
用于修改保存和加载过程的最通用的技术是实现loadobj
,如有必要,saveobj
类的方法。MATLAB®调用时执行这些方法保存
或负载
在类的对象上。
的保存
函数调用你的类saveobj
方法。的保存
函数然后保存由saveobj
方法。您可以使用saveobj
返回一个修改过的对象或结构体
包含属性值的。
负载
调用类loadobj
方法。的负载
函数加载由loadobj
方法导入工作区。一个loadobj
方法可以修改正在加载的对象,也可以从类保存的数据重构对象saveobj
方法。
saveobj
和loadobj
方法实现一个saveobj
方法修改要保存的对象,然后实现loadobj
方法来在加载对象时将其返回到正确的状态。
实现loadobj
方法作为静态
方法,因为MATLAB可以调用loadobj
方法结构体
而不是类的对象。
实现saveobj
方法作为普通方法(也就是说,调用它需要类的实例)。
MATLAB保存对象类名以便负载
可以确定哪些loadobj
方法来调用saveobj
方法只在结构中保存对象数据。因此,在加载对象时,MATLAB必须能够访问该类。
使用一个loadobj
方法时:
自保存对象以来,类定义发生了变化,要求您在加载之前修改对象。
一个saveobj
方法在保存操作期间修改对象,可能将数据保存在结构体
.实现loadobj
方法从的输出重建对象saveobj
.
当你决定修改默认的保存和加载过程时,请记住以下几点:
如果从mat文件加载任何属性值产生错误,负载
通过一项结构体
来loadobj
.的结构体
字段名对应于从文件中提取的属性名。
loadobj
总能接受一个结构体
作为输入并返回一个对象,即使没有saveobj
或saveobj
不返回结构体
.
如果saveobj
返回一个结构体
,然后负载
总是通过结构体
来loadobj
.
子类对象继承超类loadobj
和saveobj
方法。因此,如果您不实现loadobj
或saveobj
方法的子类,MATLAB只调用继承的方法。
如果一个超类实现了loadobj
或saveobj
方法,则子类也可以实现loadobj
或saveobj
方法调用超类方法。有关更多信息,请参见从类层次中保存和加载对象.
的负载
函数默认不调用构造函数。有关更多信息,请参见加载时初始化对象.