2016-08-04 56 views
-5

如果我希望創建OnlyFolderFilter的對象,我在PublicParFun中放置了一些實用函數和類。有沒有一種簡單的方法在Android中創建內部類的對象?

我必須寫代碼new PublicParFun().new OnlyFolderFilter,有沒有一種簡單的方法來創建一個Android的內部類的對象?

public class PublicParFun { 

    public static void ClearIcon(Context myContext) { 
     NotificationManager notificationManager = (NotificationManager)myContext.getSystemService(android.content.Context.NOTIFICATION_SERVICE); 
     notificationManager.cancel(myContext.getResources().getInteger(R.integer.NotificationID)); 
    } 

    public class OnlyFileFilter implements FilenameFilter{ 
     boolean isExcludeHidden; 

     public OnlyFileFilter(boolean isExcludeHidden){ 
      this.isExcludeHidden=isExcludeHidden; 
     } 

     @Override 
     public boolean accept(File dir, String name) { 
      File f=new File(dir, name); 

      if (isExcludeHidden) { 
       return f.isFile() && (f.isHidden() == false); 
      }else{ 
       return f.isFile(); 
      } 
     } 
    } 


    public class OnlyFolderFilter implements FilenameFilter{ 
     boolean isExcludeHidden; 

     public OnlyFolderFilter(boolean isExcludeHidden){ 
      this.isExcludeHidden=isExcludeHidden; 
     } 

     @Override 
     public boolean accept(File dir, String name) { 
      File f=new File(dir, name); 

      if (isExcludeHidden) { 
       return f.isDirectory() && (f.isHidden() == false); 
      }else{ 
       return f.isDirectory(); 
      } 
     } 
    } 
} 
+0

製作'OnlyFileFilter'一個'靜態class'然後就叫'新PublicParFun.OnlyFileFilter(...)' – flakes

+0

謝謝!但是靜態類不是好辦法,因爲大約有靜態類 – HelloCW

+1

「有很多限制關於靜態課程的許多限制「你是怎麼想的?如果嵌套類不依賴於包裝類中的任何實例字段或方法,它應該是靜態的。 [閱讀](https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html) – flakes

回答

1

作爲flkes already said,一個好的解決方案是你的內部類轉換爲靜態內部類。

  • 一個正常的內部類可以不存在沒有其外部類的實例,因此,你需要調用new PublicParFun().new OnlyFolderFilter(),有效地創建了兩個對象,而不是一個。

  • 當使用靜態內部類時,您可以有效地聲明內部類不需要外部類(及其字段)的實例,並且可以爲其自身存在。

你沒有使用外部類的字段,這使得你的內部類完全可以用於靜態內部類。 兩種類型之間的區別不僅是實例代碼:

  • 你的「雙重構造」創建你想要一個新的內部類,每次兩個對象。
  • 正常的內部類的實例在其外部對象上保存一個引用,所以只要你有一個對內部對象的引用就保留外部對象。
  • 另一個要點是可讀性。在讀取代碼時,如果應用了static關鍵字,則可以立即告訴內部類未修改或讀取外部類實例的狀態。
相關問題