Can I find out if a class is an abstract class before trying to instantiate it?
    8 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
Can i somehow say:
if isAbstract(className)
   % do something
else
% do something else
end
0 Kommentare
Akzeptierte Antwort
  per isakson
      
      
 am 17 Jul. 2012
        
      Bearbeitet: per isakson
      
      
 am 17 Jul. 2012
  
      A class is abstract if any of its properties or methods is abstract.
It's possible to write a function, is_abstract. Start:
    mco = ?my_class
    mco.PropertyList
    mco.MethodList
    any([mco.MethodList.Abstract])
.
or better
    mcls = meta.class.fromName('ClassName')
3 Kommentare
  Daniel Shub
      
      
 am 18 Jul. 2012
				@Walter, but that "hidden" abstract method would be abstract and eventually caught. The metaclass object has access to all methods and properties (even private ones), so I do not think it needs to be recursive.
Weitere Antworten (4)
  Image Analyst
      
      
 am 17 Jul. 2012
        I don't think so. But you should know just by looking at the code, or just try it and see. Why would you ever not know what you're calling and have to use the test you you described? Worst case, you could wrap your method call in a try/catch to do what you want, but I would recommend knowing beforehand than doing that.
0 Kommentare
  Daniel Shub
      
      
 am 18 Jul. 2012
        It might be quicker to try and create the object in a try-catch and deal with errors when they happen.
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Construct and Work with Object Arrays finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





