Lambda AbstractMethodError与库中的泛型

时间:2017-11-06 14:52:08

标签: android lambda javadoc

我有一个使用Java 8 的安卓库,并且有一个基于其他界面的默认界面。像这样:

interface GenericListener<T extends Event>
{
    void onEvent(T event);
}

interface MyEventListener extends GenericListener<MyEvent>
{

    class MyEvent extends Event
    {
        ...
    }

   /**
    * Some javadoc explanation for this method
    */
    void onEvent(MyEvent event);

}

// Elsewhere in the library, there's one method to post all events to their
// listeners

void postEvent(GenericListener listener, Event event)
{
    listener.onEvent(event);
}

所以上面的工作正是如此,至少在引入lambdas之前。如果某人在其应用程序中将MyEventListener实现为lambda,则在调用postEvent()时会抛出AbstractMethodError。如果我从MyEventListener中删除onEvent()方法,那么它工作正常。理想情况下,我想在扩展接口中实现onEvent()方法,这样我就可以为扩展GenericListener的每个接口不同地为该方法注入javadoc。

我应该注意,如果将MyEventListener接口放入与应用程序相同的模块中,那么一切都可以正常工作。

1 个答案:

答案 0 :(得分:0)

Android Studio 3.2修复了此问题。