new與instance
new與getinstance
-
new:
- 一定要生成一個新對象,分配內存
- 創建後只能當次使用
- 是直接調用構造方法
-
getinstance
- 是方法
- 不一定要再次創建,可以把一個已存在的引用給你使用,這個在性能上優於new
- 可以跨棧區域使用,或者遠程跨區域使用。所以getInstance()通常是創建static靜態實例方法的
- 多用於單例模式
- 對於抽象類要想對其實例化,只能使用getInstance方法,是不能new出來的。
new和newInstance
-
new
- 直接創建一個類、不需要這個類加載過
- 強類型(GC不會自動回收,只有所有的指向對象的引用被移除是纔會被回收,若對象聲明週期已經結束,但引用沒有被移除,經常會出現內存溢出)
-
newInstance
- 使用類加載機制創建對象
- 創建類是這個類必須已經加載過且已經連接
- 弱類型(GC是回收對象的限制條件很低,容易被回收)、低效率、只能調用無參構造。
實現接口的類加載一般採用newInstance而不會使用new