我可以在方法中使用接口吗?

时间:2009-12-24 07:06:51

标签: java

我知道on on可以在类的方法中有一个类声明。 例如。我们可以在方法体中为事件处理提供匿名类声明。

但我想知道同样的方法可以在类的方法中使用接口声明。

有什么用?

4 个答案:

答案 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);