1

I have a scenario where I need to dynamically retrieve fields from a custom object, in which I don't know the type. For the following code, the query is passed in from somewhere else, I just wrote it out for the purposes of this example.

This code works, however, the type is obviously explicit:

House__c o = Database.query('Select Id, NumberOfRooms__c from House__c limit 1');
System.debug(o.get('NumberOfRooms__c'));

So I thought I could write this code:

Object o = Database.query('Select Id, NumberOfRooms__c from House__c limit 1');
System.debug(o.get('NumberOfRooms__c'));

But I get the following error:

Error: Method does not exist or incorrect signature: void get(String) from the type Object

It looks like the .get() method isn't available on object, but is available on custom objects. Is this inherited from a class higher up in the hierarchy? If so, what can I cast o to to get this method?

Or, alternatively, is there another way to dynamically retrieve the value of fields on the object type?

1 Answer 1

2

Change Object to SObject

SObject o = Database.query('Select Id, NumberOfRooms__c from House__c limit 1');
System.debug(o.get('NumberOfRooms__c'));

SObject class has get method to dynamically get field value.

Any standard/custom object extends SObject and SObject extends Object

1
  • Thank you! This is exactly what I was looking for.
    – Jessica
    Sep 28, 2021 at 10:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.