Can I find out if a class is an abstract class before trying to instantiate it?
조회 수: 5 (최근 30일)
이전 댓글 표시
Can i somehow say:
if isAbstract(className)
% do something
else
% do something else
end
댓글 수: 0
채택된 답변
per isakson
2012년 7월 17일
편집: per isakson
2012년 7월 17일
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
Daniel Shub
2012년 7월 18일
@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.
추가 답변 (4개)
Image Analyst
2012년 7월 17일
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
Daniel Shub
2012년 7월 18일
It might be quicker to try and create the object in a try-catch and deal with errors when they happen.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Construct and Work with Object Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!