使用新的vs建立物件

2021-10-01 17:35:32 字數 1196 閱讀 6215

在執行任務期間,我看到其他開發人員,他們使用@allargsconstructor(access = accesslevel.private)建立了乙個類,該類使該類的建構函式私有.然後,他們使用代替建立乙個物件.

使用new和of建立之間有什麼區別?

a a = new a();

a a = a.of();

@allargsconstructor(access = accesslevel.private)

@equalsandhashcode

public class a

}

最佳答案

隨著時間的流逝,很明顯的是,由於您沒有在呼叫中命名引數,因此,如果可選值具有相同的型別,則很難使用各種方法來建立物件.

乙個(相當愚蠢的)示例是person類,該類可能僅允許指定名字或姓氏.在這種情況下,以下建構函式將無法工作:

person(string firstname, string lastname)

person(string firstname)

person(string lastname)

第乙個很好,但是其他兩個存在衝突,並且無法解決,因為您無法命名建構函式或引數.

使用靜態工廠方法可以在必要時命名方法:

person of(string firstname, string lastname)

person offirstname(string firstname)

person oflastname(string lastname)

不需要命名時,將使用的通用名稱.仍然可以以過載建構函式的相同方式來過載,例如您可能還具有:

person of(string firstname, string lastname, int age)
儘管工廠方法並不常用,但如果認為必要,工廠方法也可能返回子類.

對於介面,這樣的工廠方法對於例項化實現介面的物件非常方便,而不是將工廠方法放在不同的類中.

在使用介面靜態方法之前,jdk實現了arrays.aslist(…)來建立顯式給定物件的列表.通過將介面靜態方法引入該語言,該方法現在(也)在list介面本身上以list.of(…)的形式實現.

此外,他們還為set.of(…)和map.of(…)新增了便捷方法.

python建立新的物件和建立物件的引用

變數和物件存在記憶體中的不同部分,並通過連線相關聯。變數總是連線到物件,並且絕不會連線到其他變數上,但是更大的物件可能連線到其他的物件 例如乙個列表物件能夠連線到它所包含的物件 python中從變數到物件的連線稱作引用。也就是說,引用是一種關係,以記憶體中的指標的形式實現。具體而言 變數是乙個系統表...

automation不能建立新物件

還沒有解決問題的,請使用以下,我也是今天才偶然摸索到的。請將以下語句複製到記事本中,另存為字尾為.cmd的檔案,並執行。當然在命令列下一句句執行也沒問題。echo 正在修復,這個過程可能需要幾分鐘,請稍候 rundll32.exe advpack.dll delnoderundll32 system...

vs建立dll並使用

前言 學習做個記錄,積小流以望江海。鍵入 pragma once define dll export declspec dllexport extern c dll export int add int a,int b include mydll.h int add int a,int b def ...