2、對於所有物件都通用的方法
Object的設計主要是為了擴充套件。它的非final方法(equals、hashCode、toString、clone、finalize)都有明確的通用約定(general contract)。任何一個類覆蓋這些方法都有責任遵守這些約定。
覆蓋equals時遵守通用約定
覆蓋equals方法看似簡單卻易出錯。最容易避免的方法就是不覆蓋equeals方法,即類的每個例項都只與它自身相等。
覆蓋equals時總要覆蓋hashCode
如果覆蓋了equals則必須覆蓋hashCode。相等的物件必須有相等的雜湊碼(hashCode)
始終要覆蓋toString
Object提供的toString()返回的字串通常不是期望的看到的。覆蓋toString無論是否指定返回的字串格式應在文件中說明。
謹慎地覆蓋clone
因為Cloneable介面有很多問題,為了繼承而設計的類不應該去實現Cloneable介面。
考慮實現Comparable介面
類實現Comparable介面,可以跟generic algorithm(泛型演算法)及依賴於該介面實現的集合進行協作。
compareTo方法的通用約定與equals方法相似
通過指定返回值大小進行排序等操作
相關推薦
2、對於所有物件都通用的方法
Object的設計主要是為了擴充套件。它的非final方法(equals、hashCode、toString、clone、finalize)都有明確的通用約定(general contract)。任何一個類覆蓋這些方法都有責任遵守這些約定。 覆蓋equal
【讀書筆記】《Effective Java》(2)--對於所有物件都通用的方法
又讀了一章,之前一直覺得Java的體系很完善了,讀了這一章,發現原來Java平臺本身也有一些設計不周到的地方,而且有些地方因為已經成為公開API的一部分還不好改,相信繼續讀下去對Java的瞭解會更深一步的。 昨天下載了VS Code,嘗試了一下,感覺比subl
effective java中文版第三章 對於所有物件都通用的方法
道一聲坑爹。。。。上週末剛把這章整理了。。。忘了儲存了。。。迫於強迫症。。。。不得不再寫一遍。。但是也一帶而過。。。。只是為了哥的強迫症 第8條 覆蓋equals時請遵守通用約定 1,自反性 2,對稱性 3,傳遞性 第9條 覆蓋equals時總要覆蓋hashCode(這條重點記住)
【Effective java 學習】第三章:對於所有物件都通用的方法
第八條:覆蓋equals是請遵守通用約定 滿足下列四個條件之一,就不需要覆蓋equals方法: 類的每個例項本質上都已唯一的。不包括代表值的類,如:Integer,String等,Object提供的equals方法就夠用了 不關心是否提供了“邏輯相等”的測試功能。對
effective java-讀書筆記-第三章 對於所有物件都通用的方法
第三章 對於所有物件都通用的方法 所有非final方法(equals、hashCode、toString、clone、finalize)都有明確的通用約定,因為它們被設計成是要被覆蓋的,如果不遵守,基於雜湊的集合(HashMap、HashSet、HashTable)可
Effective Java學習筆記(二)對於所有物件都通用的方法
Object是一個具體類,但是設計他主要是為了擴充套件,他所有的非final方法(equals,toString,hashCode,clone,finalize)都是要被覆蓋的,並且任何一個類覆蓋非final方法時都要遵守通用原則,以便其他遵守這些預定的類能夠一同運作,
對於所有物件都通用的方法(equals)
1.在改寫equals的時候請遵守通用約定。 1)一個類的每個例項本質上都是惟一的。 2)不關心一個類是否提供了“邏輯相等”的測試功能。 3)超類改寫了equals,從超類繼承過來的行為對於子類也是合適的。public class CaseInsentiveString
Effective java筆記-對於所有物件都通用的方法
對於所有物件都通用的方法 第8條 覆蓋equals時請遵守通用約定 滿足以下任何一個條件,可以不覆蓋equals: 類的每個例項本質上都是唯一的。(如Thread) 不關心是否提供了“邏輯相等”的測試功能(如Random) 超類已經覆蓋了equals,從
對於所有物件都通用的方法
8.覆蓋equals時請遵守通用規定 需要滿足的條件: 類的每個例項本質上都是唯一的。 不關心類是否提供了“邏輯相等(logical equality)”的測試功能。 超類已經覆蓋了equals,從超類繼承過來的行為對於子類也是合適的。 類是私有的或是包級私有的,可以確
9. 【對於所有物件都通用的方法】重寫equals方法時一定也要重寫hashCode方法
本文是《Effective Java》讀書筆記第9條,其中內容可能會結合實際應用情況或參考其他資料進行補充或調整。 在每個覆蓋了equals方法的類中,一定也要覆蓋hasCode方法。否則會導致該類無法結合所有基於雜湊的集合(比如HashMap、HashS
Effective Java 總結(二) 對於所有物件都通用的方法
在改寫equals的時候請遵守通用約定 不改寫equals方法時,每個例項只與自身相等,如果滿足一下任意一個條件,則不需要改寫equals方法: 一個類的例項本質上都是唯一的 不關心類是否支援“邏輯相等”功能 超類已經改寫了equals方法 類是私有的,並且可以確定
《Effective Java》第3章 對於所有物件都通用的方法
Object類預設為所有類的基類,其雖然為一個具體的類,但是它的設計主要是為了擴充套件,而它的所有非final的方法(equals, hashCode, toString, clone和finalize)都有明確的通用約定, 如果在自定義類時要重寫這些方法,需要注意主動遵守
《Effective Java》第二章 對於所有物件都通用的方法
接下來繼續講第二章,第8-12條。第8條:覆蓋equals時請遵守通用約定equals 時Object類的一個非final方法,一般是表示類的例項物件是否相同,也就是物件的地址是否相等。但是某些時候卻要重寫Object.equals方法。即類需要有“邏輯相等”,也就是值類,這
《Effective Java》:對於所有物件都通用的方法
本系列皆為讀書筆記,“好記性不如爛筆頭”,勤看,也要勤記錄。此篇讀書筆記來自《Effective Java》。儘管Object是一個具體類,但設計它主要是為了擴充套件。它所有的非final方法都有明確的通用規定。任何一個類,在覆蓋這些方法的時候,都有責任去遵守這些通用規定,如
Effective Java讀書筆記 -- 第三章:對於所有物件都通用的方法
儘管Object是一個具體類,但是設計Object類主要是為了擴充套件。它的所有非final方法(equals、hashCode、toString、clone和finalize)都有明確的通用約定,因為它們就是被設計成要被覆蓋的。第八條:覆蓋equals時請遵守通用約定
Java高階系列——使用所有物件的通用方法
一、介紹 通過如何建立和銷燬物件一文,我們已經知道Java是一個面向物件的程式語言,Java類層次結構的頂部是Object類,Java中每個單獨的類都隱式的繼承於該類。因此,所有的類都繼承了在Object類中定義的一系列方法,這其中的一些非常重要的方法如下:
Effective Java:對於所有的物件都通用的方法
Java中所有的類都預設繼承Object類,而Object的設計主要是為了擴充套件。它的所有的非final方法(equals、hashCode、toString、clone和finalize)都有明確的通用約定(general contract),因為它們被設計
Effective Java (3rd Editin) 讀書筆記:2 所有物件共有的方法
2 所有物件共有的方法 Item 10:重寫 equals 方法時遵守通用協同 不需要重寫 equals() 方法的情況: 類的每一個例項都認為是不同。比如 Thread 這種代表活躍的實體而不是值 不需要“邏輯相等”的判斷。比如 Pattern 不需要檢查內嵌的正
Python之類變數、類方法、類作為物件傳入類方法中、結合講解版本
1、 直接上個原始碼 class Animal(object): animalName = "Animal" #類變數,看來python中沒靜態變數這一說(我之前的說法不嚴謹) @classmethod #類方法 def pr
(轉)Oracle中刪除使用者下所有物件的多種方法
方法1: drop user XXXX cascade; drop tablespace XXXX INCLUDING CONTENTS; 最省心的方法是級聯刪除 drop user XXXX cascade; 最後這個級聯特別有用(刪除使用者以及所有關聯的資料