bar*_*own 5 dynamic salesforce apex-code
我想在运行时知道变量/属性的类.例如:
Integer i = 5;
//pseudo-code
if (i.className == 'Integer') {
System.debug('This is an integer.');
} else {
System.debug('This is not an integer, but a ' + i.className);
}
Run Code Online (Sandbox Code Playgroud)
我找不到在文档中返回类类型的方法/属性(假设它在那里).我错过了吗?
如果您需要在运行时验证对象是否实际上是特定类的实例,请使用instanceof关键字...
但是,您不能instanceof在其子类的实例上使用该关键字,否则您将收到编译错误.例如:
Integer i = 0;
System.debug(i instanceof Integer);
>> COMPILE ERROR: Operation instanceof is always true since an instance of Integer is always an instance of Integer.
Run Code Online (Sandbox Code Playgroud)
您只需要在超类上使用instanceof关键字.例如:
System.debug((Object)i instanceof Integer);
>> true
Run Code Online (Sandbox Code Playgroud)
如果您需要有关类本身类型的信息,请检查System.Type方法(当前Apex开发人员指南第396页.以下是一些示例:
Type integerType;
integerType = Type.forName('Integer');
integerType = Integer.class;
Run Code Online (Sandbox Code Playgroud)
今天早些时候有人问过我.这是一个更动态的解决方案.
MyClass mine = new MyClass();
String myStr = String.valueOf(mine);
String className = myStr.split(':')[0];
System.assertEquals('MyClass', className);
Run Code Online (Sandbox Code Playgroud)