I'd like to customize the display of an enumeration class using matlab.mixin.CustomDisplay .
If I have a regular (non-enumeration) class such as the following:
classdef test < handle & matlab.mixin.CustomDisplay properties value end methods function obj = test(value) obj.value = value; end end methods (Access = protected) function displayScalarObject(obj) disp(['hello ', num2str(obj.value)]) end endend
then everything works fine – for example,
>> a = test(1)a = hello 1
But if I have an enumeration class such as the following (note the addition of the enumeration block):
classdef test < handle & matlab.mixin.CustomDisplay properties value end methods function obj = test(value) obj.value = value; end end methods (Access = protected) function displayScalarObject(obj) disp(['hello ', num2str(obj.value)]) end end enumeration enum1(1) endend
then the display is not customized – for example,
>> a = test.enum1a = enum1
Using the debugger, I can see that my displayScalarObject method is never called. Implementing other methods of matlab.mixin.CustomDisplay such as displayNonScalarObject and so on doesn't seem to help – these never get called either.
What's going on? Do disp and display work differently for enumeration classes, in such a way that anything that's overridden by matlab.mixin.CustomDisplay just gets ignored?
Is there a way to get a customized display with matlab.mixin.CustomDisplay , but using an enumeration class?
PS I am able to directly overload disp and/or display on an enumeration class that does not inherit from matlab.mixin.CustomDisplay , and this works fine. But I'm looking to use matlab.mixin.CustomDisplay if possible.
Best Answer