Java中的匿名內部類
通常通過繼承某個類或實現某個接口的方式來編寫代碼,但是有時候某一些代碼隻使用一次,就沒有必要寫專門寫一個子類或實現類了,可以采用匿名內部類的寫法。最常用的場景是線程方麵的應用。一、不使用匿名內部類
①繼承
abstract class Player
{
public abstract void play();
}
public class FootBallPlayer extends Player
{
public void play()
{
System.out.println("踢足球");
}
}
public class AnonymousInnerClassTest
{
public static void main(String[] args)
{
Player p1 = new FootBallPlayer();
p1.play();
}
}
②接口
interface IPlayer
{
public void play();
}
public class IPlayFootballImpl implements IPlayer
{
public void play()
{
System.out.println("踢足球");
}
}
public class AnonymousInnerClassTest
{
public static void main(String[] args)
{
IPlayer ip1 = new IPlayFootballImpl();
ip1.play();
}
}
二、使用匿名內部類
①繼承
abstract class Player
{
public abstract void play();
}
public class AnonymousInnerClassTest
{
public static void main(String[] args)
{
Player p2 = new Player() {
public void play()
{
System.out.println("打籃球");
}
};
p2.play();
}
}
②接口
interface IPlayer
{
public void play();
}
public class AnonymousInnerClassTest
{
public static void main(String[] args)
{
IPlayer ip2 = new IPlayer() {
public void play()
{
System.out.println("打籃球");
}
};
}
}
三、線程中的應用
實現線程的方法有兩種:①繼承Thread類 ②實現Runnable接口。給出用匿名類實現的例子:
public class ThreadTest
{
public static void main(String[] args)
{
// 繼承Thread類
Thread thread = new Thread() {
@Override
public void run()
{
while (true)
{
try
{
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName());
System.out.println(this.getName());
}
catch (InterruptedException e)
{
System.out.println(e.getMessage());
}
}
}
};
thread.start();
// 實現Runnable接口
Thread thread2 = new Thread(new Runnable() {
@Override
public void run()
{
while (true)
{
try
{
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName());
}
catch (InterruptedException e)
{
System.out.println(e.getMessage());
}
}
}
});
thread2.start();
}
}
最後更新:2017-04-04 07:32:25
上一篇:
XML(1)——shema約束之命名空間
下一篇:
linux/Aix啟動、關閉Oracle及監聽
Flurry:2012年美國和中國移動市場最具潛力
行業資深專家切身經驗——給數據科學家新手的建議
大規模中文概念圖譜CN-Probase正式發布
撿到iPhone7怎麼解鎖?手機鎖屏了密碼忘了怎麼辦?
解決Conversion to Dalvik format failed with error 1
js中的Window對象
穿著華麗的死人
Android源碼研究的準備工作 -- 下載android源碼到Ubuntu上(親自調試,不能過分迷信GOOGLE文檔)
大數據全真案例帶你來解密如何挑選“風水寶地”
了解ASP.NET MVC幾種ActionResult的本質:JavaScriptResult & JsonResult