主要内容

查找具有特定值的对象

找到处理对象

使用手柄findobj方法来查找具有具有特定值的属性的对象通信录对象表示数据库中的电话簿条目通信录类的子类动态行动类,它派生自手柄

classdef电话簿属性姓名地址号码终止方法函数obj=电话簿(n,a,p)obj.Name=n;obj.Address=a;obj.Number=p;终止终止终止

这里有三个通信录数据库中的条目:

PB(1)=电话簿(“南希·维达尔”,“华盛顿街123号”,'5081234567');PB(2)=电话簿(“南希·维达尔”,“主街123号”,'5081234568');PB(3)=电话簿(“南希黄”,“南街123号”,'5081234569');

这三个中的一个通信录对象具有动态特性:

PB(2).addprop(“高速互联网”);PB(2).高速互联网=1米的;

找到属性/值对

查找表示employee的对象南希并通过串接字符串显示名称和数字:

西北= findobj(铅、“姓名”,“南希黄”); [NW.Name,' - ',西北方向,电话号码]
ans=Nancy Wong-5081234569

查找具有特定属性名称的对象

使用以下命令搜索具有特定特性名称的对象:财产选择:

H = findobj(铅、“-财产”,“高速互联网”);H.高速互联网
ans = 1米

这个财产选项使您可以忽略特性的值,并仅使用特性名称搜索对象。

使用逻辑表达式

搜索特性名称和值的特定组合:

H = findobj(铅、“姓名”,“南希·维达尔”,“-和”,“地址”,“主街123号”);H.编号
ans=5081234568

按属性设置查找

所有元类都派生自手柄类。您可以使用手柄findobj方法查找具有特定属性设置的类成员。

例如,通过搜索meta.class方法列表对于元方法对象及其摘要属性设置为真正的:

使用字符格式的类名,因为类是抽象的。不能创建该类的对象:

mc=meta.class.fromName(“MyClass”);

搜索方法列表名单元方法对象,用于具有摘要属性设置为真正的:

absMethods=findobj(mc.MethodList,“摘要”,对);methodNames={absMethods.Name};

细胞阵列,方法名,包含类中抽象方法的名称。

查找具有公共获取访问权限的属性

查找中所有属性的名称集装箱。地图具有公共属性的类获取访问权限:

  • 得到meta.class对象。

  • 使用findobj的数组元属性物体。

  • 使用大括号创建属性名称的单元格数组。

mc=?containers.Map;mpArray=findobj(mc.PropertyList,“GetAccess”,“公众”);名称= {mpArray.Name};

显示所有的名称集装箱。地图具有公共属性的属性获取访问权限:

celldisp(姓名)
名称{1}=计数名称{2}=键类型名称{3}=值类型

发现静态方法

确定是否有集装箱。地图类方法是静态的:

~isempty(findobj([mc.MethodList(:)]),“静态”(对)
ans=1

findobj返回元方法静态方法的对象。在这种情况下,静态方法列表不是空的。因此,存在由此类定义的静态方法。

的方法获取任何静态方法的名称元方法数组:

staticMethodInfo=findobj([mc.MethodList(:)],“静态”,true);staticMethodInfo(:).Name
ans=空

静态方法(本例中只有一个)的名称是空的.这是来自元方法对象空的方法:

静态方法信息
具有以下属性的方法:Name:'empty'Description:'返回给定大小的空对象数组'DetailedDescription:'Access:'public'静态:1抽象:0密封:0隐藏:1输入名称:{'varargin'}输出名称:{'E'}定义类:[1x1 meta.class]

另见

相关的话题