| Author |
AutoBoxing/Unboxing
|
Ravi Yadav
Greenhorn
Joined: Mar 02, 2008
Posts: 29
|
|
Hi Here is another question from K&B: 8. Given: 12. public class AccountManager { 13. private Map accountTotals = new HashMap(); 14. private int retirementFund; 15. 16. public int getBalance(String accountName) { 17. Integer total = (Integer) accountTotals.get(accountName); 18. if (total == null) 19. total = Integer.valueOf(0); 20. return total.intValue(); 21. } 23. public void setBalance(String accountName, int amount) { 24. accountTotals.put(accountName, Integer.valueOf(amount)); 25. } } This class is to be updated to make use of appropriate generic types, with no changes in behavior (for better or worse). Which of these steps could be performed? (Choose three.) A. Replace line 13 with private Map<String, int> accountTotals = new HashMap<String, int>(); B. Replace line 13 with private Map<String, Integer> accountTotals = new HashMap<String, Integer>(); C. Replace line 13 with private Map<String<Integer>> accountTotals = new HashMap<String<Integer>>(); D. Replace lines 17�20 with int total = accountTotals.get(accountName); if (total == null) total = 0; return total; E. Replace lines 17�20 with Integer total = accountTotals.get(accountName); if (total == null) total = 0; return total; F. Replace lines 17�20 with return accountTotals.get(accountName); G. Replace line 24 with accountTotals.put(accountName, amount); The correct answers are B,E and G. If E is correct, what's wrong with F? Cant the return value of accountTotals be unboxed on the fly? The answer explaination says: "F is wrong because a null can't unbox to 0" Can someone please decode this for me? What's null in here and where is do we have 0? regards, SCJPAspirant
|
 |
ailina nagarawati
Greenhorn
Joined: Jul 25, 2007
Posts: 4
|
|
E is correct but F is wrong because in choice E: E. Replace lines 17�20 with Integer total = accountTotals.get(accountName); if (total == null) total = 0; return total; the total is checked whether its null if its null, then total will be 0 whereas in choice F: Replace lines 17�20 with return accountTotals.get(accountName); there is not any checking whether the total is null if the total is null, the value returned for the method "getBalance" which is supposed to be "int" IS NOT compatible with the "null" value of the total. and "null" cannot be unbox to 0 hope that helps
|
 |
Ravi Yadav
Greenhorn
Joined: Mar 02, 2008
Posts: 29
|
|
|
Oh i missed that. Thanks Ailina.
|
 |
Gilles Marceau
Ranch Hand
Joined: Feb 17, 2007
Posts: 78
|
|
Hello, you are supposed to use your real name here, please see : http://www.javaranch.com/name.jsp Gilles
|
SCJP 1.5<br />SCJD 1.6<br />SCBCD in progress...
|
 |
Ravi Yadav
Greenhorn
Joined: Mar 02, 2008
Posts: 29
|
|
|
Thanks Marceau.
|
 |
 |
|
|
subject: AutoBoxing/Unboxing
|
|
|