Java匿名對象與匿名內(nèi)部類
匿名對象:沒有名字的對象。
非匿名對象:
ClassName c=new ClassName();
c.run();
匿名對象:
new ClassName().run();
注意事項:
1、當(dāng)對象對方法僅進(jìn)行一次調(diào)用的時候,就可以簡化成匿名對象。
2、兩個匿名對象不可能是同一個對象。
3、一般不給匿名對象賦予屬性值,因為永遠(yuǎn)無法獲取到。
4、運(yùn)行一次,直接就被回收掉了,節(jié)省內(nèi)存空間。
匿名對象使用的代碼例子:
public class Anony{
int a=1;
int b=2;
void run(){
System.out.println(a+b);
}
public static void main(String[] args){
new Anony().a=10; //匿名對象不能重新賦值,賦值仍然失效
Anony a=new Anony();
a.run(); //通過創(chuàng)建對象的方式去調(diào)用方法
new Anony().run(); //匿名創(chuàng)建對象并調(diào)用方法
}
}
運(yùn)行結(jié)果:
3
3
匿名內(nèi)部類:匿名內(nèi)部類也就是沒有名字的內(nèi)部類。
格式:
ClassName object=new ClassName(){
/*代碼塊*/
};
注意事項:
1、匿名內(nèi)部類必須繼承一個父類或?qū)崿F(xiàn)一個接口。
抽象類代碼例子:(接口同理)
abstract class AnonyTest{
int a=1;
int b=2;
public abstract void run();
}
public class AnonyInner{
public static void main(String[] args){
AnonyTest a=new AnonyTest(){ //抽象匿名類
public void run() {
System.out.println(a+b);
}
};
a.run();
}
}
如果不使用匿名內(nèi)部類來實現(xiàn)抽象方法:
abstract class AnonyTest{
int a=1;
int b=2;
public abstract void run();
}
class AnonyDemo extends AnonyTest{
public void run() {
System.out.println(a+b);
}
}
public class AnonyInner{
public static void main(String[] args) {
AnonyTest a=new AnonyDemo(); //上轉(zhuǎn)對象
a.run();
}
}
運(yùn)行結(jié)果:
3
相關(guān)文章
淺談Java中ThreadLocal內(nèi)存泄露的原因及處理方式
內(nèi)存泄漏就是我們申請了內(nèi)存,但是該內(nèi)存一直無法釋放,就會導(dǎo)致內(nèi)存溢出問題,本文詳細(xì)的介紹了ThreadLocal內(nèi)存泄露的原因及處理方式,感興趣的可以了解一下2023-05-05
Java使用wait() notify()方法操作共享資源詳解
這篇文章主要為大家詳細(xì)介紹了Java使用wait() notify()方法操作共享資源,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10
SparkSQL使用IDEA快速入門DataFrame與DataSet的完美教程
本文給大家介紹使用idea開發(fā)Spark SQL 的詳細(xì)過程,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-08-08
Spring聲明式事務(wù)和@Aspect的攔截順序問題的解決
本篇文章主要介紹了Spring聲明式事務(wù)和@Aspect的攔截順序問題的解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
在java中如何將inputStream對象轉(zhuǎn)換為File對象(不生成本地文件)
這篇文章主要介紹了在java中如何將inputStream對象轉(zhuǎn)換為File對象(不生成本地文件),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03

