Is it possible to dynamically set properties of an `Object` using Apex?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}
Background
I would like to be able to dynamically set properties of an Object
(not SObject
).
Given this class:
public class Invoice {
public String Ref { get; set; }
}
I would like to be able to do this:
Invoice inv = new Invoice();
inv.put('Ref', 'REF123');
But when I do Execute Anonymous Apex
with above code, I this error:
ERROR: Compilation failed.
! ERROR: Line: 3, Column: 12
! Method does not exist or incorrect signature: void put(String, String)
! from the type Invoice
ERROR: Execution failed.
Question
- Is it possible to dynamically set properties of an
Object
(notSObject
) using Apex? - How would I dynamically set a property of an
Object
using Apex?
apex object dynamic-apex
add a comment |
Background
I would like to be able to dynamically set properties of an Object
(not SObject
).
Given this class:
public class Invoice {
public String Ref { get; set; }
}
I would like to be able to do this:
Invoice inv = new Invoice();
inv.put('Ref', 'REF123');
But when I do Execute Anonymous Apex
with above code, I this error:
ERROR: Compilation failed.
! ERROR: Line: 3, Column: 12
! Method does not exist or incorrect signature: void put(String, String)
! from the type Invoice
ERROR: Execution failed.
Question
- Is it possible to dynamically set properties of an
Object
(notSObject
) using Apex? - How would I dynamically set a property of an
Object
using Apex?
apex object dynamic-apex
add a comment |
Background
I would like to be able to dynamically set properties of an Object
(not SObject
).
Given this class:
public class Invoice {
public String Ref { get; set; }
}
I would like to be able to do this:
Invoice inv = new Invoice();
inv.put('Ref', 'REF123');
But when I do Execute Anonymous Apex
with above code, I this error:
ERROR: Compilation failed.
! ERROR: Line: 3, Column: 12
! Method does not exist or incorrect signature: void put(String, String)
! from the type Invoice
ERROR: Execution failed.
Question
- Is it possible to dynamically set properties of an
Object
(notSObject
) using Apex? - How would I dynamically set a property of an
Object
using Apex?
apex object dynamic-apex
Background
I would like to be able to dynamically set properties of an Object
(not SObject
).
Given this class:
public class Invoice {
public String Ref { get; set; }
}
I would like to be able to do this:
Invoice inv = new Invoice();
inv.put('Ref', 'REF123');
But when I do Execute Anonymous Apex
with above code, I this error:
ERROR: Compilation failed.
! ERROR: Line: 3, Column: 12
! Method does not exist or incorrect signature: void put(String, String)
! from the type Invoice
ERROR: Execution failed.
Question
- Is it possible to dynamically set properties of an
Object
(notSObject
) using Apex? - How would I dynamically set a property of an
Object
using Apex?
apex object dynamic-apex
apex object dynamic-apex
edited 43 mins ago
Robs
asked 1 hour ago
RobsRobs
2,554743
2,554743
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
For some isolated cases - yours is one of them - there is this (ab)use of the serialize methods:
Invoice inv = (Invoice) JSON.deserialize(JSON.serialize(new Map<<String, Object>{
'Ref' => 'REF123'
})), Invoice.class);
Here, the capability of JSON.deserialize
to create an instance of the specified type and set the properties of the instance is being used.
But in general, Apex is missing the map-like behavior for objects or a reflection API.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "459"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f260323%2fis-it-possible-to-dynamically-set-properties-of-an-object-using-apex%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
For some isolated cases - yours is one of them - there is this (ab)use of the serialize methods:
Invoice inv = (Invoice) JSON.deserialize(JSON.serialize(new Map<<String, Object>{
'Ref' => 'REF123'
})), Invoice.class);
Here, the capability of JSON.deserialize
to create an instance of the specified type and set the properties of the instance is being used.
But in general, Apex is missing the map-like behavior for objects or a reflection API.
add a comment |
For some isolated cases - yours is one of them - there is this (ab)use of the serialize methods:
Invoice inv = (Invoice) JSON.deserialize(JSON.serialize(new Map<<String, Object>{
'Ref' => 'REF123'
})), Invoice.class);
Here, the capability of JSON.deserialize
to create an instance of the specified type and set the properties of the instance is being used.
But in general, Apex is missing the map-like behavior for objects or a reflection API.
add a comment |
For some isolated cases - yours is one of them - there is this (ab)use of the serialize methods:
Invoice inv = (Invoice) JSON.deserialize(JSON.serialize(new Map<<String, Object>{
'Ref' => 'REF123'
})), Invoice.class);
Here, the capability of JSON.deserialize
to create an instance of the specified type and set the properties of the instance is being used.
But in general, Apex is missing the map-like behavior for objects or a reflection API.
For some isolated cases - yours is one of them - there is this (ab)use of the serialize methods:
Invoice inv = (Invoice) JSON.deserialize(JSON.serialize(new Map<<String, Object>{
'Ref' => 'REF123'
})), Invoice.class);
Here, the capability of JSON.deserialize
to create an instance of the specified type and set the properties of the instance is being used.
But in general, Apex is missing the map-like behavior for objects or a reflection API.
answered 51 mins ago
Keith CKeith C
97.4k1197220
97.4k1197220
add a comment |
add a comment |
Thanks for contributing an answer to Salesforce Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f260323%2fis-it-possible-to-dynamically-set-properties-of-an-object-using-apex%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown