Java匿名類


匿名類,正如名字一樣在java中沒有名字標識的類,當然了編譯后還是會安排一個名字的。

下面是一個關於匿名類的簡單例子:


	public static void main(String[] args) throws InterruptedException {		Thread t=new Thread(new Runnable() {
				System.out.println("hello,dusk!");


Java語言規范上是這么描述匿名類的:

匿名類的聲明:

匿名類的聲明是由java編譯器自動派生自一個類實例創建表達式。

匿名類永遠不能是抽象的。

匿名類總是隱式的final。

匿名類總是一個內部類;並且不能是static的。

 

實際使用中我們只需注意這幾點兒:

      1、使用匿名內部類時,我們必須是繼承一個類或者實現一個接口,但是兩者不可兼得,同時也只能繼承一個類或者實現一個接口。
      2、匿名內部類中是不能定義構造函數的。
      3、匿名內部類中不能存在任何的靜態成員變量和靜態方法。
      4、匿名內部類為局部內部類,所以局部內部類的所有限制同樣對匿名內部類生效。
      5、匿名內部類不能是抽象的,它必須要實現繼承的類或者實現的接口的所有抽象方法。

 

編譯時的命名規則:

  • 內部類的class文件命名是:主類+$+內部類名
  • 匿名類的class文件命名是:主類+$+(1,2,3....)

定義一個場景:

package com.dusk.anonymous;
public class AnonymousClassTest {	private Runnable r1=new Runnable() {
			System.out.println(1);
		Runnable r2=new Runnable() {
				System.out.println(2);
	public static void main(String[] args) {			Runnable r3=new Runnable() {
					System.out.println(3);

從代碼中我們可以看出定義了三個匿名類:

我們反編譯出來:

  1.  

    https://blog.csdn.net/jiaotuwoaini/article/details/51542059


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM