Java 类实例,并在方法参数内重写
有谁能帮我理解这个java代码块吗Java 类实例,并在方法参数内重写,java,class,anonymous-inner-class,Java,Class,Anonymous Inner Class,有谁能帮我理解这个java代码块吗 String [] files= file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { // TODO Auto-generated method stub return true; } }); 这只是一个例子,我需要理解在方法参数中
String [] files= file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return true;
}
});
这只是一个例子,我需要理解在方法参数中包含override方法的新实例的概念
我理解这段代码的作用,但我需要理解它的概念*这叫做匿名内部类
在java中,没有名称的类称为匿名内部类。如果必须重写类或接口的方法,则应使用它。这称为匿名内部类 在java中,没有名称的类称为匿名内部类。如果必须重写类或接口的方法,则应使用它。请查看
File.list(FilenameFilter filter)
它以一个参数作为参数,而该参数又具有方法
boolean接受(文件目录,字符串名称)
您想将一个新的FilenameFilter
传递给该方法,方法是将其作为一个传入,并重写匿名类中的accept
方法。查看文件的列表(FilenameFilter过滤器)
它以一个参数作为参数,而该参数又具有方法
boolean接受(文件目录,字符串名称)
您想将一个新的
FilenameFilter
传递给该方法,方法是将它作为一个参数传入并重写匿名类中的accept
方法。假设您有一个带有接口或抽象类作为参数的方法。如果调用此方法,则必须传递指定类型的具体实例。一种可能性是,在参数内创建一个实例。这称为匿名类
只有当您只需要这个类一次时,才应该这样做。假设您有一个带有接口或抽象类作为参数的方法。如果调用此方法,则必须传递指定类型的具体实例。一种可能性是,在参数内创建一个实例。这称为匿名类
只有当您只需要这个类一次时才应该这样做。如果您在java.io.File中签入list()的实际实现,它看起来是这样的
public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
List<String> v = new ArrayList<>();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return v.toArray(new String[v.size()]);
}
public String[]列表(FilenameFilter过滤器){
字符串名称[]=list();
if((name==null)| |(filter==null)){
返回姓名;
}
列表v=新的ArrayList();
for(int i=0;i
该方法需要实现FilenameFilter的任何实例。它在File.list()方法中所做的是调用过滤器参数的accept()。它实际执行调用方的原始实现。这意味着您在本例中提供的被重写的方法内容。如果您在java.io.File中签入list()的实际实现,它看起来是这样的
public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
List<String> v = new ArrayList<>();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return v.toArray(new String[v.size()]);
}
public String[]列表(FilenameFilter过滤器){
字符串名称[]=list();
if((name==null)| |(filter==null)){
返回姓名;
}
列表v=新的ArrayList();
for(int i=0;i
该方法需要实现FilenameFilter的任何实例。它在File.list()方法中所做的是调用过滤器参数的accept()。它实际执行调用方的原始实现。因此,这意味着您在本例中提供的重写方法内容。它正在创建一个实现
FilenameFilter
接口我认为您应该阅读它正在创建一个实现FilenameFilter
接口我认为您应该阅读它只是一个匿名类。不是内部阶级。内部类和匿名类是不同的。当然,你可以同时拥有两个类,但据我们所知,这里不是这样的,它只是一个匿名类。不是内部阶级。内部类和匿名类是不同的。当然,你可以同时上两门课,但据我们所知,这里的情况并非如此。