m = metaclass(obj)
m = metaclass(className)
m = ?ClassName
| Parameter | Description |
|---|---|
| obj | a classdef object or handle |
| className | a class name as a string, including package-qualified names |
| Parameter | Description |
|---|---|
| m | a metadata structure |
metaclass returns metadata for a classdef class.
?ClassName is accepted as compatible shorthand for metaclass('ClassName'), including package-qualified class names.
The returned structure contains Name, SuperclassList, PropertyList, MethodList, EventList, and EnumerationMemberList. EventList contains public events; EventDetails contains all declared events.
ClassDetails reports raw class attributes and derived flags such as Abstract, Sealed, and Handle.
For classdef classes, PropertyDetails, MethodDetails, EventDetails, and EnumerationDetails expose Nelson metadata structures for common attributes such as access, static methods, hidden or sealed methods, constant, dependent, and observable properties. Detail structures also include an Attributes cell array with the raw block attributes.
ClassDetails fields are Name, Attributes, Abstract, Sealed, Handle, Hidden, ConstructOnLoad, and InferiorClasses. InferiorClasses stores the class attribute expression as text.
PropertyDetails fields are Name, DefiningClass, DefaultValueExpression, Access, GetAccess, SetAccess, GetMethod, SetMethod, Constant, Dependent, Abstract, Hidden, GetObservable, SetObservable, AbortSet, Transient, NonCopyable, Dynamic, ValidationExpression, and Attributes.
When metaclass is called with a scalar object that has dynamic properties, PropertyList and PropertyDetails include those instance properties with Dynamic set to true.
MethodDetails fields are Name, DefiningClass, Access, Static, Hidden, Sealed, Abstract, and Attributes.
EventDetails fields are Name, DefiningClass, ListenAccess, NotifyAccess, Hidden, and Attributes. EnumerationDetails fields are Name, DefiningClass, and ConstructorArguments.
d = [tempdir(), 'nelson_help_metaclass/'];
mkdir(d);
filewrite([d, '/NelsonHelpMetaPoint.m'], ["classdef NelsonHelpMetaPoint"; " properties (Constant)"; " Dimension = 2"; " end"; " properties"; " X = 0"; " end"; " methods"; " function r = value(obj)"; " r = obj.X;"; " end"; " end"; " methods (Static)"; " function obj = origin()"; " obj = NelsonHelpMetaPoint();"; " end"; " end"; "end"]);
addpath(d);
m = ?NelsonHelpMetaPoint;
m.PropertyList
m.ClassDetails.Handle
m.PropertyDetails(find(strcmp({m.PropertyDetails.Name}, 'Dimension'))).Constant
m.PropertyDetails(find(strcmp({m.PropertyDetails.Name}, 'Dimension'))).Attributes
m.MethodDetails(find(strcmp({m.MethodDetails.Name}, 'origin'))).Static
m.MethodDetails(find(strcmp({m.MethodDetails.Name}, 'origin'))).Attributes
| Version | Description |
|---|---|
| 2.0.0 | classdef metadata support added |