Illegal assignment from SObject to ContactFetching String, Id from Map - Illegal Assignment Id to Field /...

Will a top journal at least read my introduction?

get exit status from system() call

Bayes Nash Equilibria in Battle of Sexes

Was there a Viking Exchange as well as a Columbian one?

Toggle Overlays shortcut?

How can the Zone of Truth spell be defeated without the caster knowing?

What is the point of Germany's 299 "party seats" in the Bundestag?

Sci-fi novel series with instant travel between planets through gates. A river runs through the gates

Why was Germany not as successful as other Europeans in establishing overseas colonies?

Any examples of headwear for races with animal ears?

Feels like I am getting dragged in office politics

What's the metal clinking sound at the end of credits in Avengers: Endgame?

Were there two appearances of Stan Lee?

Examples of non trivial equivalence relations , I mean equivalence relations without the expression " same ... as" in their definition?

Is there a way to detect if the current member function is operating on an lvalue or rvalue?

Minimum value of 4 digit number divided by sum of its digits

When India mathematicians did know Euclid's Elements?

Is creating your own "experiment" considered cheating during a physics exam?

How does a swashbuckler fight with two weapons and safely dart away?

Why is current rating for multicore cable lower than single core with the same cross section?

Do I have an "anti-research" personality?

Do generators produce a fixed load?

Is there a way to get a compiler for the original B programming language?

Does jamais mean always or never in this context?



Illegal assignment from SObject to Contact


Fetching String, Id from Map - Illegal Assignment Id to Field / ObjectError: Compile Error: Illegal assignment from String to BooleanError: List has no rows for assignment to SObjectError on Test Class - System.QueryException: List has no rows for assignment to SObjectRemote action problemDML requires SObject or SObject list type error“Illegal assignment from List to List”Test Class Fail: Batch Class: System.QueryException: List has no rows for assignment to SObjectMapping to a user'List has no rows for assignment to SObject' Mystery






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







1















I am getting the following error:




Illegal assignment from SObject to Contact




I created a class called DynamicSObjectUpdater that I use to consolidate DML statements in my triggers. Basically you just call the class getSObject and it appends the SObject to a Map called sorToUpdate and then returns the SObject.



In one of my classes, I am calling the Class and its saying the following code is an illegal assignment from SObject to Contact.



Contact conToUpdate = sObjectUpdater.getSObject(con.Id);


I am not sure what I am missing here to make this work.



public with sharing class DyanmicSObjectUpdater {

Map<SObjectType, Map<Id, sObject>> sorToUpdate = new Map<SObjectType, Map<Id, sObject>>();

public SObject getSObject(ID sObjectID)
{
SObjectType sot = sObjectID.getSobjectType();

if(!sorToUpdate.containsKey(sot))
{
sorToUpdate.put(sot, new Map<Id, SObject>());
}

SObject targetSObject = sorToUpdate.get(sot).get(sObjectID);

if(targetSObject == null)
{
targetSObject = sObjectID.getSobjectType().newSobject(sObjectID);
sorToUpdate.get(sot).put(sObjectID, targetSObject);
}

return targetSObject;
}


public void updateSObjects()
{

List<SObject> sObjectsToUpdate = new List<SObject>();
if(sObjectsToUpdate.size() > 0)
{
for(SObjectType sorType: sorToUpdate.keySet())
{
sObjectsToUpdate.addAll(sorToUpdate.get(sorType).values());
}
}

if(sObjectsToUpdate.size()>0) update sObjectsToUpdate;
}
}









share|improve this question































    1















    I am getting the following error:




    Illegal assignment from SObject to Contact




    I created a class called DynamicSObjectUpdater that I use to consolidate DML statements in my triggers. Basically you just call the class getSObject and it appends the SObject to a Map called sorToUpdate and then returns the SObject.



    In one of my classes, I am calling the Class and its saying the following code is an illegal assignment from SObject to Contact.



    Contact conToUpdate = sObjectUpdater.getSObject(con.Id);


    I am not sure what I am missing here to make this work.



    public with sharing class DyanmicSObjectUpdater {

    Map<SObjectType, Map<Id, sObject>> sorToUpdate = new Map<SObjectType, Map<Id, sObject>>();

    public SObject getSObject(ID sObjectID)
    {
    SObjectType sot = sObjectID.getSobjectType();

    if(!sorToUpdate.containsKey(sot))
    {
    sorToUpdate.put(sot, new Map<Id, SObject>());
    }

    SObject targetSObject = sorToUpdate.get(sot).get(sObjectID);

    if(targetSObject == null)
    {
    targetSObject = sObjectID.getSobjectType().newSobject(sObjectID);
    sorToUpdate.get(sot).put(sObjectID, targetSObject);
    }

    return targetSObject;
    }


    public void updateSObjects()
    {

    List<SObject> sObjectsToUpdate = new List<SObject>();
    if(sObjectsToUpdate.size() > 0)
    {
    for(SObjectType sorType: sorToUpdate.keySet())
    {
    sObjectsToUpdate.addAll(sorToUpdate.get(sorType).values());
    }
    }

    if(sObjectsToUpdate.size()>0) update sObjectsToUpdate;
    }
    }









    share|improve this question



























      1












      1








      1








      I am getting the following error:




      Illegal assignment from SObject to Contact




      I created a class called DynamicSObjectUpdater that I use to consolidate DML statements in my triggers. Basically you just call the class getSObject and it appends the SObject to a Map called sorToUpdate and then returns the SObject.



      In one of my classes, I am calling the Class and its saying the following code is an illegal assignment from SObject to Contact.



      Contact conToUpdate = sObjectUpdater.getSObject(con.Id);


      I am not sure what I am missing here to make this work.



      public with sharing class DyanmicSObjectUpdater {

      Map<SObjectType, Map<Id, sObject>> sorToUpdate = new Map<SObjectType, Map<Id, sObject>>();

      public SObject getSObject(ID sObjectID)
      {
      SObjectType sot = sObjectID.getSobjectType();

      if(!sorToUpdate.containsKey(sot))
      {
      sorToUpdate.put(sot, new Map<Id, SObject>());
      }

      SObject targetSObject = sorToUpdate.get(sot).get(sObjectID);

      if(targetSObject == null)
      {
      targetSObject = sObjectID.getSobjectType().newSobject(sObjectID);
      sorToUpdate.get(sot).put(sObjectID, targetSObject);
      }

      return targetSObject;
      }


      public void updateSObjects()
      {

      List<SObject> sObjectsToUpdate = new List<SObject>();
      if(sObjectsToUpdate.size() > 0)
      {
      for(SObjectType sorType: sorToUpdate.keySet())
      {
      sObjectsToUpdate.addAll(sorToUpdate.get(sorType).values());
      }
      }

      if(sObjectsToUpdate.size()>0) update sObjectsToUpdate;
      }
      }









      share|improve this question
















      I am getting the following error:




      Illegal assignment from SObject to Contact




      I created a class called DynamicSObjectUpdater that I use to consolidate DML statements in my triggers. Basically you just call the class getSObject and it appends the SObject to a Map called sorToUpdate and then returns the SObject.



      In one of my classes, I am calling the Class and its saying the following code is an illegal assignment from SObject to Contact.



      Contact conToUpdate = sObjectUpdater.getSObject(con.Id);


      I am not sure what I am missing here to make this work.



      public with sharing class DyanmicSObjectUpdater {

      Map<SObjectType, Map<Id, sObject>> sorToUpdate = new Map<SObjectType, Map<Id, sObject>>();

      public SObject getSObject(ID sObjectID)
      {
      SObjectType sot = sObjectID.getSobjectType();

      if(!sorToUpdate.containsKey(sot))
      {
      sorToUpdate.put(sot, new Map<Id, SObject>());
      }

      SObject targetSObject = sorToUpdate.get(sot).get(sObjectID);

      if(targetSObject == null)
      {
      targetSObject = sObjectID.getSobjectType().newSobject(sObjectID);
      sorToUpdate.get(sot).put(sObjectID, targetSObject);
      }

      return targetSObject;
      }


      public void updateSObjects()
      {

      List<SObject> sObjectsToUpdate = new List<SObject>();
      if(sObjectsToUpdate.size() > 0)
      {
      for(SObjectType sorType: sorToUpdate.keySet())
      {
      sObjectsToUpdate.addAll(sorToUpdate.get(sorType).values());
      }
      }

      if(sObjectsToUpdate.size()>0) update sObjectsToUpdate;
      }
      }






      apex






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 1 hour ago









      Robs

      2,589743




      2,589743










      asked 2 hours ago









      Matthew MetrosMatthew Metros

      774




      774






















          2 Answers
          2






          active

          oldest

          votes


















          3














          You need to cast the return value.



          Contact conToUpdate = (Contact)sObjectUpdater.getSObject(con.Id);


          More generally, you cannot directly assign a value typed at compile time as a superclass (like sObject) to a variable typed as a subclass (Contact is a subclass of sObject). You can perform a cast to tell the compiler that the sObject instance you're getting back from getSObject() is actually a Contact; if at runtime this is not the case (i.e., you get back an Account or something else that isn't a Contact), you will receive an exception.



          You might find the implementation of the Unit of Work pattern in fflib interesting as you're building this type of generic/abstracted DML code.






          share|improve this answer
























          • Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.

            – Matthew Metros
            1 hour ago













          • @MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.

            – David Reed
            55 mins ago



















          3














          You need to cast the result



          Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);





          share|improve this answer
























            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
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f260343%2fillegal-assignment-from-sobject-to-contact%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            3














            You need to cast the return value.



            Contact conToUpdate = (Contact)sObjectUpdater.getSObject(con.Id);


            More generally, you cannot directly assign a value typed at compile time as a superclass (like sObject) to a variable typed as a subclass (Contact is a subclass of sObject). You can perform a cast to tell the compiler that the sObject instance you're getting back from getSObject() is actually a Contact; if at runtime this is not the case (i.e., you get back an Account or something else that isn't a Contact), you will receive an exception.



            You might find the implementation of the Unit of Work pattern in fflib interesting as you're building this type of generic/abstracted DML code.






            share|improve this answer
























            • Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.

              – Matthew Metros
              1 hour ago













            • @MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.

              – David Reed
              55 mins ago
















            3














            You need to cast the return value.



            Contact conToUpdate = (Contact)sObjectUpdater.getSObject(con.Id);


            More generally, you cannot directly assign a value typed at compile time as a superclass (like sObject) to a variable typed as a subclass (Contact is a subclass of sObject). You can perform a cast to tell the compiler that the sObject instance you're getting back from getSObject() is actually a Contact; if at runtime this is not the case (i.e., you get back an Account or something else that isn't a Contact), you will receive an exception.



            You might find the implementation of the Unit of Work pattern in fflib interesting as you're building this type of generic/abstracted DML code.






            share|improve this answer
























            • Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.

              – Matthew Metros
              1 hour ago













            • @MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.

              – David Reed
              55 mins ago














            3












            3








            3







            You need to cast the return value.



            Contact conToUpdate = (Contact)sObjectUpdater.getSObject(con.Id);


            More generally, you cannot directly assign a value typed at compile time as a superclass (like sObject) to a variable typed as a subclass (Contact is a subclass of sObject). You can perform a cast to tell the compiler that the sObject instance you're getting back from getSObject() is actually a Contact; if at runtime this is not the case (i.e., you get back an Account or something else that isn't a Contact), you will receive an exception.



            You might find the implementation of the Unit of Work pattern in fflib interesting as you're building this type of generic/abstracted DML code.






            share|improve this answer













            You need to cast the return value.



            Contact conToUpdate = (Contact)sObjectUpdater.getSObject(con.Id);


            More generally, you cannot directly assign a value typed at compile time as a superclass (like sObject) to a variable typed as a subclass (Contact is a subclass of sObject). You can perform a cast to tell the compiler that the sObject instance you're getting back from getSObject() is actually a Contact; if at runtime this is not the case (i.e., you get back an Account or something else that isn't a Contact), you will receive an exception.



            You might find the implementation of the Unit of Work pattern in fflib interesting as you're building this type of generic/abstracted DML code.







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered 1 hour ago









            David ReedDavid Reed

            40.5k82360




            40.5k82360













            • Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.

              – Matthew Metros
              1 hour ago













            • @MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.

              – David Reed
              55 mins ago



















            • Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.

              – Matthew Metros
              1 hour ago













            • @MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.

              – David Reed
              55 mins ago

















            Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.

            – Matthew Metros
            1 hour ago







            Thank you for the insight on this. I am beginning to learn generic/abstracted coding patterns. Let me know if you have any resources that you can point me to that you found helpful when you were beginning to learn these topics.

            – Matthew Metros
            1 hour ago















            @MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.

            – David Reed
            55 mins ago





            @MatthewMetros That's a good question, and I don't have a great answer for you. Reading good code from major Salesforce open source projects is certainly one route.

            – David Reed
            55 mins ago













            3














            You need to cast the result



            Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);





            share|improve this answer




























              3














              You need to cast the result



              Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);





              share|improve this answer


























                3












                3








                3







                You need to cast the result



                Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);





                share|improve this answer













                You need to cast the result



                Contact conToUpdate = (Contact) sObjectUpdater.getSObject(con.Id);






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 1 hour ago









                RobsRobs

                2,589743




                2,589743






























                    draft saved

                    draft discarded




















































                    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.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f260343%2fillegal-assignment-from-sobject-to-contact%23new-answer', 'question_page');
                    }
                    );

                    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







                    Popular posts from this blog

                    Installing LyX: “No textclass is found.”LyX installation error- text class not found- 'Reconfigure' or...

                    (1602) Indiana Índice Designación y nombre Características orbitales Véase...

                    Universidad Autónoma de Occidente Índice Historia Campus Facultades Programas Académicos Medios de...