何时在类中实现接口以及何时实例化接口的匿名实现

时间:2016-04-02 10:10:39

标签: java interface

何时在类中实现接口以及何时实例化接口的匿名实现。以下是两个界面。

public interface InterfaceOne {
    void one();
}

public interface InterfaceTwo {
    void two();
}

方法1:在类

中实现接口
public class A implements InterfaceOne, InterfaceTwo {

    private void doSomething() {
        Hello hello = new Hello();
        hello.hi(this);
        hello.bye(this);
    }

    @Override
    public void one() {
        //One
    }

    @Override
    public void two() {
        //Two
    }
}

方法2:实例化接口的匿名实现

public class B {

    private void doSomething() {
        Hello hello = new Hello();
        hello.hi(interfaceOne);
        hello.bye(interfaceTwo);
    }

    private InterfaceOne interfaceOne = new InterfaceOne() {
        @Override
        public void one() {
            //One
        }
    };

    private InterfaceTwo interfaceTwo = new InterfaceTwo() {
        @Override
        public void two() {
            //Two
        }
    };
}

我们需要使用方法1和方法2的情景是什么?

1 个答案:

答案 0 :(得分:1)

使用Java8稍微改变了一些东西,因为使用功能接口你可以定义lambdas,它们在内部被管理为匿名类,所以尴尬的语法有所保存。

在任何情况下,匿名类只有在处理不需要命名的事物时才有意义(想想按钮的ActionListener)。相反,命名类总是有意义的,没有明确的理由避免命名类。