我在PublicParFun中放了一些实用函数和类,如果我希望创建一个OnlyFolderFilter的对象。
我必须编写代码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 :(得分:1)
作为flkes already said,一个好的解决方案是将内部类转换为静态内部类。
如果没有外部类的实例,普通内部类就不能存在,因此需要调用new PublicParFun().new OnlyFolderFilter()
,有效地创建两个对象而不是一个。
当使用静态内部类时,您有效地声明内部类不需要外部类(及其字段)的实例,并且可以为自己存在。
您没有使用外部类的字段,这使得您的内部类成为静态内部类的完美候选者。 两种类型之间的区别不仅仅是实例化代码: