Apex 開発:deepCloneとCloneの区別
3297 ワード
普通の方(clone)
Account a = new Account(Name='Acme', BillingCity='New York');
Account b = new Account();
Account[] q1 = new Account[]{a,b};
Account[] q2 = q1.clone();
q1[0].BillingCity = 'San Francisco';
System.debug(q1[0].BillingCity); // San Francisco
System.debug(q2[0].BillingCity); // San Francisco
同じポインターのため、q1修正すると、q2の値も変更されるとのことです。
deepCloneの方
Account a = new Account(Name='Acme', BillingCity='New York');
Account b = new Account();
Account[] q1 = new Account[]{a,b};
Account[] q2 = q1.deepClone();
q1[0].BillingCity = 'San Francisco';
System.debug(q1[0].BillingCity); // San Francisco
System.debug(q2[0].BillingCity); // New York
List<Account> accts = [SELECT CreatedById, CreatedDate, LastModifiedById,
LastModifiedDate, BillingCity
FROM Account
WHERE Name='Acme' OR Name='Salesforce'];
// Clone list while preserving timestamp and user ID fields.
Account[] q3 = accts.clone();
// Verify timestamp fields are preserved for the first list element.
System.debug(q3[0].Id);
System.debug(q3[0].CreatedById);
System.debug(q3[0].CreatedDate);
System.debug(q3[0].LastModifiedById);
System.debug(q3[0].LastModifiedDate);
List<Account> accts = [SELECT CreatedById, CreatedDate, LastModifiedById,
LastModifiedDate, BillingCity
FROM Account
WHERE Name='Acme' OR Name='Salesforce'];
// Clone list while preserving timestamp and user ID fields.
Account[] q3 = accts.deepClone(false,false,false);
// Verify timestamp fields are preserved for the first list element.
System.debug(q3[0].Id);
System.debug(q3[0].CreatedById);
System.debug(q3[0].CreatedDate);
System.debug(q3[0].LastModifiedById);
System.debug(q3[0].LastModifiedDate);
「Id」、参照のみ「タイムスタンプ」と「自動採番」はこまめに扱いできる。
ディフォルト:false
Author And Source
この問題について(Apex 開発:deepCloneとCloneの区別), 我々は、より多くの情報をここで見つけました https://qiita.com/z-dtc/items/9289e5888885719d7e29著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .