亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Java中的“ final”關鍵字如何工作?(我仍然可以修改對象)

瀏覽:96日期:2024-05-07 08:25:19
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解決Java中的“ final”關鍵字如何工作?(我仍然可以修改對象)?

你總是允許初始化一個final變量。編譯器確保你只能執行一次。

請注意,對存儲在final變量中的對象的調用方法與的語義無關final。換句話說:final僅與引用本身有關,而與引用對象的內容無關。

Java沒有對象不變性的概念。這是通過精心設計對象來實現的,這是一項艱巨的工作。

這是一個最喜歡的面試問題。帶著這些問題,訪問者試圖找出你對對象的構造,方法,類變量(靜態變量)和實例變量的理解程度。

import java.util.ArrayList;import java.util.List;class Test { private final List foo; public test() {foo = new ArrayList();foo.add('foo'); // Modification-1 } public void setFoo(List foo) { //this.foo = foo; Results in compile time error. }}

在上述情況下,我們為“ Test”定義了一個構造函數,并為其指定了“ setFoo”方法。

關于構造器: 構造函數可以調用只有一個使用每個對象的創建時間new關鍵字。你不能多次調用構造函數,因為構造函數的目的不是這樣做的。

關于方法:可以根據需要多次調用方法(甚至永遠不會調用),并且編譯器知道該方法。

場景1

private final List foo; // 1

foo是實例變量。當我們創建Test類對象時,實例變量foo將被復制到Test類對象中。如果我們foo在構造函數內部分配,則編譯器知道構造函數將僅被調用一次,因此在構造函數內部分配它沒有問題。

如果我們foo在一個方法內部賦值,編譯器就會知道一個方法可以被多次調用,這意味著必須多次更改該值,而final變量是不允許的。因此編譯器認為構造函數是一個不錯的選擇!你只能一次將值分配給最終變量。

方案2

private static final List foo = new ArrayList();

foo現在是一個靜態變量。當我們創建Test類的實例時,foo不會被復制到對象,因為它foo是靜態的?,F在foo不是每個對象的獨立屬性。這是Test類的屬性。但是foo可以被多個對象看到,如果每個使用new關鍵字創建的對象最終將調用Test構造函數,則該構造函數會在創建多個對象時更改值(記住static foo并不是在每個對象中都復制,而是在多個對象之間共享)

場景3

t.foo.add('bar'); // Modification-2

以上Modification-2是你的問題。在上述情況下,你沒有更改第一個引用的對象,而是在foo其中添加了允許的內容。如果你嘗試將a分配new ArrayList()給foo引用變量,則編譯器會抱怨。規則如果已初始化final變量,則無法將其更改為引用其他對象。(在這種情況下ArrayList)

final類不能被子類化final方法不能被覆蓋。(此方法在超類中)最終方法可以重寫。(以語法方式閱讀。此方法在子類中)

解決方法

在Java中,我們使用final帶有變量的關鍵字來指定其值不被更改。但是我看到你可以在類的構造函數/方法中更改值。同樣,如果變量是static,則為編譯錯誤。

這是代碼:

import java.util.ArrayList;import java.util.List;class Test { private final List foo; public Test() { foo = new ArrayList(); foo.add("foo"); // Modification-1 } public static void main(String[] args) { Test t = new Test(); t.foo.add("bar"); // Modification-2 System.out.println("print - " + t.foo); }}

上面的代碼工作正常,沒有錯誤。

現在將變量更改為static:

private static final List foo;

現在是編譯錯誤。這final真的如何運作?

標簽: java
相關文章:
主站蜘蛛池模板: 在线免费视频你懂的 | 国产乱码精品一区二区 | 国产精品4p露脸在线播放 | 久cao在线香蕉69影院 | 国产亚洲一区在线 | 五月伊人网 | 亚洲高清视频网站 | 国产20页 | 日本特级全黄一级毛片 | 欧美日韩成人高清在线播放 | 另类图片成人偷拍 | 国产精品区牛牛影院 | 一级特黄性色生活片 | 一级a毛片免费 | 日本高清中文字幕视频在线 | 亚洲精品免费在线观看 | 妞干网在线观看视频 | 日韩a级黄色片 | 国产精品日韩欧美在线第3页 | 国产日产亚洲欧美综合另类 | 色偷偷女男人的天堂亚洲网 | 99热只有精品一区二区 | 中文字幕 亚洲 一区二区三区 | 香蕉依依精品视频在线播放 | 偷拍第一页 | 亚洲色综合 | 亚洲欧美日韩在线观看你懂的 | 日韩 国产 在线 | 国产精品久久久久久五月尺 | 一级特黄视频 | 免费中日高清无专码有限公司 | 4388x17亚洲最大成人网 | 亚洲一区二区三区在线观看蜜桃 | 国产成人精品免费视频大全办公室 | 全毛片 | 亚洲 欧美 中文字幕 | 成人免费福利网站在线看 | 青青草综合视频 | 一级视频在线观看免费 | 亚洲一区日韩二区欧美三区 | 久久香蕉国产在产线看观看 |