我们可以在 Salesforce(apex) 中动态投射 SObject 吗?
Posted
技术标签:
【中文标题】我们可以在 Salesforce(apex) 中动态投射 SObject 吗?【英文标题】:Can we Cast SObject dynamically in Salesforce(apex)? 【发布时间】:2014-11-03 20:41:53 【问题描述】:是否可以动态转换 SObject?
例子:
我知道我们可以做到:
(Account) Sobject
但我想这样做,因为 sObject 的返回类型会根据某些参数而变化。
(Dynamically Passing the Name) SObject
任何方式都会有所帮助...在此先感谢:)
【问题讨论】:
我相信简短的回答是否定的,因为您仍然必须将其分配给强类型变量。 不是直接转换,但你可以使用 Type 类来玩一些扩展? salesforce.com/us/developer/docs/apexcode/Content/… Type 类只允许您基于类型实例化一个新类。它不允许您重铸已实例化的对象。 这里和你的问题类似-salesforce.stackexchange.com/questions/89087/…,也许对你有帮助 【参考方案1】:很遗憾,没有。我最近在编写 TestFactory 类时遇到了这个问题。我能做的最好的事情就是将响应转换回调用 TestFactory 方法的代码中的预期类型。
【讨论】:
【参考方案2】:是的,你可以做到。例如 -
Class ABC
public static List<Object> method1(String sObjectType)
List<Object> records = new List<Object>();
if(sObjectType == 'Account')
records = [SELECT Id, Name FROM Account];
else if(sObjectType == 'Account')
records = [SELECT Id, Name FROM Contact];
return records;
可以查看List的sObject类型——
if(records instanceof List<Account>)
// your code here
else if(records instanceof List<Contact>)
// your code here
【讨论】:
使用相当新的“switch”语句也可以解决部分问题。以上是关于我们可以在 Salesforce(apex) 中动态投射 SObject 吗?的主要内容,如果未能解决你的问题,请参考以下文章
salesforce 零基础学习(六十一)apex:component简单使用以及图片轮转播放的实现
如何使用lightning发送上传的文件到Apex:fileUpload - Salesforce lightning
如何使用 Apex 在 SalesForce 中以编程方式访问报告