为什么匿名类不能直接实现多个接口?仅仅是因为语法还是有其他原因?
2022-09-01 18:33:40
在一个内部问题中,为什么java匿名类不能同时实现和子类?还是仅仅因为语法?
在一个内部问题中,为什么java匿名类不能同时实现和子类?还是仅仅因为语法?
在一个内部问题中,为什么java匿名类不能同时实现和子类?
我相信这是由于语法原因造成的99%。类型参数甚至支持交集类型(),所以我认为这样的功能不会引入任何矛盾或复杂性。<T extends InterfaceX & InterfaceY>
例如,像这样的表达式可以编译成类似的东西new (InterfaceX & InterfaceY)() { ... }
interface InterfaceXandY extends InterfaceX, InterfaceY {}
... new InterfaceXandY() { ... }
之所以没有添加此类功能,很可能是因为这是一个罕见的用例,有一个简单的解决方法。
在一个有点相关的音符上。例如,您可以让 lambda 实现,方法是Serializable
Runnable r = (Runnable & Serializable)() -> System.out.println("Serializable!");
仅语法,所谓的匿名类是100%的正态类。通过使用java.lang.reflect.Proxy和InvocationHandler,你可能会得到一个时髦的结果,这将是最肮脏的方法。
更简单的方法包括在方法中声明类并仅添加“实现”,