10.謹慎地改寫clone
clone是對物件內域的直接複製,當域中有物件引用時,要分清淺複製和深複製。關於深複製淺複製可以參考:https://blog.csdn.net/qq_27469549/article/details/80501284
所以在實現Cloneable介面的時候,要特別小心,所以要實現clone方法,要謹慎。或者退一步,我們根本不去利用克隆去實現,利用其它的途徑來實現物件的拷貝,拷貝建構函式就是其中一種。
既然Cloneable具有以上那麼多問題,所以,可以安全地說,其它的介面不應該擴充套件這個介面,並且,為了繼承而設計的類也不應該實現這個介面。由於它具有那麼多缺點,有些專家級的程式設計師從來不去改寫clone方法,也從來不去呼叫它,除非是為了低開銷地拷貝一個數組。
相關推薦
10.謹慎地改寫clone
clone是對物件內域的直接複製,當域中有物件引用時,要分清淺複製和深複製。關於深複製淺複製可以參考:https://blog.csdn.net/qq_27469549/article/details/80501284 所以在實現Cloneable介面的時候,
第10條:謹慎地改寫clone
/** * A class implements the <code>Cloneable</code> interface to * indicate to the {@link java.lang.Object#clone()} method
【第10條】謹慎地改寫clone
原作者在這一條上用了8頁的篇幅,翻譯版也有7頁,足以說明這一條的重要性。我個人對此條的標註是重量級的5顆星! 克隆——是一個很讓人“感興趣”而又“頗有爭議”的話題,無論是在生物界還是在程式碼的世界中。 Java通過實現Cloneable介面來“說明
第11條:謹慎地覆蓋clone
術語: Clone介面的作用是為了表明類的物件允許克隆,但是Object中的clone方法是受保護的,而沒有提供一個公共可訪問的clone方法。Object中關於clone方法的說明如下: protected Object clone()
Effective Java之謹慎地覆蓋clone(十一)
Clone提供一種語言之外的機制:無需呼叫構造器就可以建立物件。 它的通用約定非常弱: 建立和返回該物件的一個拷貝。這個拷貝的精確含義取決於該物件的類。一般含義是,對於任何物件x,表示式x.clone() != x 將會是true,並且,表示式x.clone
謹慎地覆蓋clone
Clone提供一種語言之外的機制:無需呼叫構造器就可以建立物件。 它的通用約定非常弱: 建立和返回該物件的一個拷貝。這個拷貝的精確含義取決於該物件的類。一般含義是,對於任何物件x,表示式x.clone() != x 將會是true,並且,表示式x.clone().getClass() == x.getCla
effective java(11) 之謹慎地覆蓋clone
effective java 之謹慎地覆蓋clone 1、Cloneable介面表明這樣的物件是允許克隆的,但這個介面並沒有成功達到這個目的,主要是因為它缺少一個clone方法,Object的clone方法是受保護的。如果不借助反射,就不能僅僅因為一個物件實現了Coln
第七十四條 謹慎地實現 serizable 介面
我們把 String 或 八大基本型別的值儲存在記憶體,或儲存到本地file資料夾裡,或通過網路傳給服務端,比較容易;但我們自定義的 class 物件怎麼辦,他們直接儲存到本地,儲存不了他們的屬性的值,比如 class Student 物件,裡面 age 和 address 兩個屬性;有個物件 s
【sukyle的專欄】著急的事,慢慢地說;大事要事,想清楚說;小事瑣事,幽默地說;做不到的事,不要隨便說;傷人的事,堅決不說;沒有的事,不要胡說;別人的事,謹慎地說;自己的事,坦誠直說;該做的事,做好再說;將來的事,到時再說。
著急的事,慢慢地說;大事要事,想清楚說;小事瑣事,幽默地說;做不到的事,不要隨便說;傷人的事,堅決不說;沒有的事,不要胡說;別人的事,謹慎地說;自己的事,坦誠直說;該做的事,做好再說;將來的事,到時再...
Effective Java 3rd 條目13 謹慎覆寫clone
Cloneable介面目的是作為類的一個混入介面(mixin interface)(條目20),宣稱這些允許克隆。不幸的是,它未能作為這個目的。它的主要缺點在於,缺少了clone方法,而且Object的clone方法是受保護的。沒有訴諸於反射(reflection)(條目65),你不能僅僅因
Effective Java 第三版讀書筆記——條款 45:明智而謹慎地使用Stream
pip resource 如果 ast 批量 統一 發現 lines 控制 在 Java 8 中添加了 Stream API,以簡化順序或並行執行批量操作的任務。該 API 提供了兩個關鍵的抽象:流(Stream),表示有限或無限的數據元素序列,以及流管道(stream p
Effective Java 第三版——83. 明智謹慎地使用延遲初始化
打破 alt 修飾 auto 理由 們的 所有 作用 ldh Tips 書中的源代碼地址:https://github.com/jbloch/effective-java-3e-source-code 註意,書中的有些代碼裏方法是基於Java 9 API中的,所以JDK
10月15日科技聯播:百度外賣正式更名“餓了麼星選”;央視曝科大訊飛以AI為名拿地蓋別墅
百度外賣退出歷史舞臺,正式更名為“餓了麼星選”,外賣之爭的新戰役打響;科大訊飛再次陷入“輿情高地”,頂著AI的名號搞房地產,遭央視點名曝光;巨頭聯手,網易雲聯手百度,線上音樂市場是否會掀起新的波瀾?一起來看今天的科技快訊: 百度外賣更名“餓了麼星選”,外賣業變兩軍對壘 百度外賣今日正式更名為“餓了麼星
如何科學地進行一場產品設計評審?(附10條設計原則)
Jackob Nielsen 曾基於實際設計案例中的上百個可用性問題,總結出十條設計原則(design heuristics),並依此提出一種啟發式設計評審(heuristic evaluation)方法。 Jakob Nielsen 在人機互動界頗有造詣,也是大名鼎鼎的 Nielsen Norman 集團
有10億個雜亂無章的數,怎樣最快地求出其中前1000大的數
1)方法1 建一個1000個數的最小堆,然後依次新增剩餘元素,如果大於堆頂的數(堆中最小的),將這個數替換堆頂,並調整結構使之仍然是一個最小堆,這樣,遍歷完後,堆中的1000個數就是所需的最大的1000個。演算法的時間複雜度為O(nlogk)=n*log1000=10n(n為10億,k為10
2018.10.03 bzoj3707: 圈地(計算幾何)
傳送門 計算幾何好題。 本蒟蒻表示不看題解只會O(n3)O(n^3)O(n3)。 正解是先考慮把直線按照斜率從小到大排序,然後把點按座標排序。 這樣每次列舉到直線(a,b)(a,b)(a,b)時,離直
IDEA報錯: Clone failed: Authentication failed for 'http://10.70.XXXXXXXXXXXXXXXXX'
今天從git上匯入公司的專案,總是報錯Clone failed: Authentication failed for 'http://10.70.XXXXXXXXXXXXXX' 在網上百度了一下,大致有兩個原因: 1.沒有許可權 2.windows憑證的問題 解決
Principle 5.0 最新漢化版 更好地支援 Mojave (10.14) 系統
5.0 版新功能及改進 支援 MacOS Mojave (10.14) 黑色介面 可從 Figma 匯入設計稿 新的匯入 UI 介面 匯入全屏的 Sketch 設計稿 新增下拉列表以選擇 Sketch 設計稿 重新設計的媒體按鈕,讓功能更清晰
[Swift通天遁地]一、超級工具-(10)使用地圖檢視MKMapView的相機功能實現建立三維地圖
本文將演示使用地圖檢視MKMapView的相機功能實現建立三維地圖。 在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】 1 import UIKit 2 //在當前的類檔案中引入所需的類庫 3 import MapKit 4 5 class V
讀書筆記-《Effective Java》第10、11條:覆蓋toString方法與clone方法
第10條 始終要覆蓋toString方法 提供合適的輸出,會經常用到。 第11條 謹慎地覆蓋clone 特別注意(謹慎的源頭) 如果直接使用super.clone(),那麼基本資料型別會複製,但是物件、陣列這種型別就會只複製引用。 也就是說如果修改clo