我已经看到我们可以在Method中传递任何类型的参数。
import java.io.File;
import java.io.FileFilter;
public class LastModified {
public static File lastFileModified(String dir) {
File fl = new File(dir);
File[] files = fl.listFiles(new FileFilter() {
public boolean accept(File file) {
return file.isFile();
}
});
long lastMod = Long.MIN_VALUE;
System.out.println("lastMod:"+lastMod);
File choice = null;
for (File file : files) {
System.out.println("File:"+file);
if (file.lastModified() > lastMod) {
choice = file;
lastMod = file.lastModified();
}
}
return choice;
}
public static void main(String[] args) {
lastFileModified("D:\\TestFiles");
}
}
这里在listFiles方法中我们传递了Interface事物。似乎正在创建Interface对象,但据我所知,它无法完成。它只是引用实现该接口的类的对象。
据说“这只是一种说法”这个参数将接受支持此接口的任何对象。它等同于接受基类类型的某个对象,即使你传入了一个子类。“NOT CLEARED
问题:
1) **new FileFilter()** of which class object is being created here ?
2) If we are using interface in class, then why its not implemented in above class ?
3) If its a one more way to implement, then what if that interface would have 10 declared methods ? So Do we need to define all after **new FileFilter()** ?
任何人都可以帮我理解这个吗?我真的很困惑
答案 0 :(得分:2)
要回答您的问题,我们逐一介绍
1)new FileFilter()
在这里创建了哪个类对象?
它将是匿名类的对象。见Can we create an object of an interface?
2)如果我们在课堂上使用界面,为什么它没有在上面的类中实现?
它不需要从主类实现。您只是在引用类中不需要实现的接口。
3)如果它是另一种实现方式,那么如果该接口将有10个声明的方法呢?那么我们是否需要在new FileFilter()
之后定义所有内容?
是的,在这种情况下,需要实施所有方法。
答案 1 :(得分:0)
匿名类可以实现接口,而且没有"实现"关键词。
更多stackoverflow链接:Can we create an instance of an interface in Java?,Can we create an object of an interface?
另外,您已经了解了Java 8中引入的功能接口案例。只有一个抽象方法的接口称为功能接口。
在此处阅读有关功能接口的更多信息:https://www.journaldev.com/2763/java-8-functional-interfaces