How to get the name of the calling class in a static method?
Ältere Kommentare anzeigen
Hi,
is there a way so that a static method can get the name of the class that is calling it?
In a non-static method, one always has the option of running class(obj) obj being the object on whihc the method is being applied. But how to do it for a static method?
Akzeptierte Antwort
Weitere Antworten (1)
Captain Karnage
am 16 Mai 2023
Another option is you can pass an empty version of the subclass enumeration to the superclass method. This would mean you have to create a version of the function in each subclass, which I know is a bit of a pain, but it ends up being a very simple, one line function in the subclass. Below is a very simple example, but this works really well if the static function you want to use in the superclass it is in rather complicated as you can use a simple pass through to call it from the subclass.
classdef mySuperClass
methods(static)
function name = getName ( subObj )
arguments
subObj mySuperClass
end
name = class(subObj);
%Note: you can call any other static functions or properties using myEnum.staticname
end
end
end
classdef mySubClassA
methods(static)
function name = getName()
name = getName@mySuperClass( mySubClassA.empty );
end
end
end
classdef mySubClassB
methods(static)
function name = getName()
name = getName@mySuperClass( mySubClassB.empty );
end
end
end
now mySubClassA.getName will return "mySubClassA" and likewise for mySubClassB
If you do similar with other static functions - by passing an empty class in to subObj, you can call the getName function using subObj.getName.
Kategorien
Mehr zu Data Type Identification finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!