我們知道一般實例化一個對象的格式,如下:
Car car = new Car();
其中,變量名 car 就是 new Car() 這個對象的名字。car 是引用類型的變量,它的值存放的是對象的引用(或地址),通過 car 這個變量我們就可以間接使用對象。
那所謂 Java 匿名對象,簡單理解就是對象沒有名字嘛。那怎樣的對象會沒有名字呢?如下:
new Car();
那這種匿名對象如何使用呢?所謂使用就是指調用對象的屬性和方法。如下:
new Car().door;
new Car().start();
這兩行代碼有兩個 new 關鍵字,說明實例化了兩個對象,并不是一個哦。
由于這兩個對象沒有名字,所以這兩行代碼執行完以后,我們就無法再使用它們了,然后它們將會被 GC(Java 垃圾回收機制)當作垃圾回收掉。
所以,匿名對象只能被調用一次。
那匿名對象有什么用處呢?沒什么卵用。
唯一有點用處的地方就是,當對象對方法或屬性僅進行一次調用的時候,使用匿名對象可以少寫一些代碼,代碼看起來更簡潔。
//匿名對象調用方法
new Car().start();
//非匿名對象調用方法
Car car = new Car();
car.start();
看到了吧,使用匿名對象只需要一行代碼,而非匿名對象需要兩行代碼。
另外,匿名對象也可以作為參數傳遞給方法
//給汽車添加一個重啟方法
public void restart(Car car) { // 汽車熄火了,需要傳入另一輛汽車幫忙點火重新啟動
//...
}
Car car = new Car();
car.restart(new Car()); //匿名對象作為參數使用
以后看到匿名對象的使用,相信你不會再覺得別扭或奇怪啦。