我知道on on可以在类的方法中有一个类声明。 例如。我们可以在方法体中为事件处理提供匿名类声明。
但我想知道同样的方法可以在类的方法中使用接口声明。
有什么用?
答案 0 :(得分:1)
我假设您正在引用返回方法的接口?
简短回答:是的。
为什么?
这是一篇好文章 Why we return type Mostly Interface rather than Class?
摘录:
好处是返回 界面使得改变成为可能 以后的实施。例如,你 可能会在一段时间后决定你 更确切地说,使用LinkedList 一个ArrayList .....
答案 1 :(得分:1)
我认为你不能在方法中声明一个接口。你为什么想要? 您只能定义匿名内部类。
答案 2 :(得分:1)
没有。你为什么不写一个,编译,亲眼看看?
假设一个接口可以在一个方法中声明,它在外面是不可访问的。很难想象这种接口在块中的有用性。另一方面,本地类可能很有用,因为它包含具体的实现。
答案 3 :(得分:0)
你可以这样做,一个众所周知的例子就是Comparator<T>
界面。
例如:
List<Person> persons = personDAO.list();
Collections.sort(persons, new Comparator<Person>() {
// Anonymous inner class which implements Comparator interface.
public int compare(Person one, Person other) {
return one.getName().compareTo(other.getName());
}
});
有些人可能反对这一点,并告诉它它属于Person
类,因此您无需在需要时再次实施它。 E.g。
public class Person {
// ...
public static final Comparator<Person> ORDER_BY_NAME = new Comparator<Person>() {
public int compare(Person one, Person other) {
return one.getName().compareTo(other.getName());
}
};
}
可以按如下方式使用:
Collections.sort(persons, Person.ORDER_BY_NAME);