第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

是不是要定義final不可變參數(shù),將參數(shù)綁定到另一個(gè)局部變量并改變局部變量?

是不是要定義final不可變參數(shù),將參數(shù)綁定到另一個(gè)局部變量并改變局部變量?

函數(shù)式編程 2019-04-18 14:11:09
注意:同樣的問題適用于其他不可變類型,如String和Boolean。我有這樣的方法(這是一個(gè)更復(fù)雜的方法的簡單例子):例1public BigDecimal addTwo(BigDecimal bigDecimal) {     bigDecimal = bigDecimal.add(new BigDecimal(2));     return bigDecimal;}我知道,我可以簡單地回來bigDecimal.add(new BigDecimal(2))。但這只是一個(gè)例子。這段代碼的問題是我無法添加final到方法參數(shù)和Eclipse困擾我。所以我會(huì)寫:例2public BigDecimal addTwo(final BigDecimal bigDecimal) {     BigDecimal bigDecimalLocal = bigDecimal;     bigDecimalLocal = bigDecimalLocal.add(new BigDecimal(2));     return bigDecimalLocal;}我知道,我可以直接做BigDecimal bigDecimalLocal = bigDecimal.add(new BigDecimal(2))。但我再說一遍,這只是一個(gè)例子。問題是:當(dāng)我這樣做時(shí):BigDecimal bigDecimalLocal = bigDecimal;我不是在創(chuàng)造一個(gè)新的BigDecimal。我將同一個(gè)對(duì)象分配給另一個(gè)變量。我在SO上發(fā)現(xiàn)了一種簡單的克隆BigDecimal方法:例3BigDecimal bigDecimalLocal = new BigDecimal(bigDecimal.toString());問題是:既然BigDecimal是不可改變的,這真的有必要嗎?我不能像示例#2那樣簡單嗎?我認(rèn)為final關(guān)鍵字不能以這種方式失效。
查看完整描述

3 回答

?
開心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊

示例2很好,但您根本不需要局部變量,我認(rèn)為它們會(huì)降低方法的可讀性。我會(huì)這么做的

public BigDecimal addTwo(final BigDecimal bigDecimal) {
    return bigDecimal.add(BigDecimal.valueOf(2));}

如果我想添加另一個(gè)BigDecimal怎么辦?“我必須返回bigDecimal.add(BigDecimal.valueOf(2).add(BigDecimal.valueOf(3))?我認(rèn)為它不那么可讀。

如果要添加兩次(或多個(gè)常量),那么將常量提取為常量可能是有意義的。喜歡,

private static final BigDecimal TWO = BigDecimal.valueOf(2);private static final BigDecimal THREE = BigDecimal.valueOf(3);
public static BigDecimal addTwoAndThree(final BigDecimal bigDecimal) {
    return TWO.add(THREE).add(bigDecimal);}


查看完整回答
反對(duì) 回復(fù) 2019-05-15
?
夢(mèng)里花落0921

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊

看來你不明白引用的概念。

當(dāng)你有這個(gè):

BigDecimal incoming = new BigDecimal(2);addTwo(incoming);...
public BigDecimal addTwo(BigDecimal bigDecimal) {
  bigDecimal = bigDecimal.add(new BigDecimal(2));}

事情是:在該方法結(jié)束后incoming仍然是2!

add()調(diào)用創(chuàng)建一個(gè)新的 BigDecimal對(duì)象,然后變量bigDecimal指向該新對(duì)象。

但參考incoming仍指向舊對(duì)象!

簡而言之:方法參數(shù)的關(guān)鍵字final 不完全符合你的想法。其唯一目的是阻止您重新分配該參數(shù)/值。所以你真的想了解對(duì)象和引用之間的區(qū)別。然后關(guān)于通過引用傳遞


查看完整回答
反對(duì) 回復(fù) 2019-05-15
  • 3 回答
  • 0 關(guān)注
  • 609 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)