"ismethod" on restricted methods

6 views (last 30 days)
Torsten
Torsten on 3 Jan 2023
Edited: per isakson on 6 Jan 2023
i have class A with a method which is restricted to only be accessible by class B. When i am in class B i want to make sure that class A has this method. "ismethod" however does not work since the method is restricted. I think there should be some way to do this, since i am able to run the method from within B. I could do this with try & catch, but there must be a nicer solution to this.
% class A
classdef classA
methods (Static, Access = ?classB)
function method1
disp("hello, this is method1")
end
end
end
% class B
classdef classB
methods (Static)
function flag = CheckForMethod1(anotherClass)
flag = ismethod(anotherClass, 'method1'); % = false
anotherClass.method1; % this works
end
end
end
% Main
A = classA;
B = classB;
B.CheckForMethod1(A) % should return true, but returns false

Answers (1)

per isakson
per isakson on 6 Jan 2023
Edited: per isakson on 6 Jan 2023
This works
function flag = CheckForMethod1(anotherClass)
mc = metaclass( anotherClass );
flag = ismember( 'method1', {mc.MethodList.Name} );
anotherClass.method1; % this works
end
The function, ismethod, is restricted to public methods by design - I guess.

Categories

Find more on Class Introspection and Metadata in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!