【发布时间】:2014-07-08 08:19:13
【问题描述】:
我正在SoftKeyboard 上开展一个项目。我正在编辑随 Eclipse ADT 包提供的示例代码。我意识到它已经扩展了 InputMethodService。但是,我想在软键中附加一个ContextMenu。
因此,在这种情况下,我也需要扩展 Activity。我该如何解决这个问题?
【问题讨论】:
-
没有。 Java 不支持类的多重继承。如果您需要扩展多个类,那么您几乎肯定会遇到设计问题,并且真的需要扩展多个类。组合优于继承可能会有所帮助。
-
@user3580294 对不起,那是废话。虽然你不能在 Java 中这样做,但能够扩展多个类通常是一个有用的特性,而且绝对不是设计缺陷。它被广泛认为是 Java 的设计缺陷,只允许它以接口的残障方式出现。
-
@GabeSechan 抱歉,重复一遍我已经阅读了所有内容。诸如如果你想要多重继承,是时候考虑组合了。或者在很多情况下它真的不合适。 Here's 一个 bajillion 的例子,虽然老实说,我不确定是否只是像我这样的人在重复他们所听到的内容,尽管我认为作者的话至少有一定的分量。介意为你的最后一句话提供来源吗?这是我第一次听说它,而且它“经常有用”......
-
@GabeSechan 我想看到有人以另一种方式争论让我感到惊讶......很好奇为什么,当我听说 MI 本身不一定有缺陷时,它只会导致比其价值更糟糕的情况,而且通常有更好的解决方案。
-
@user3580294 在某些情况下 MI 是最好的,在某些情况下多继承是最好的。但仅仅因为有些地方它不是一个好主意并不意味着你完全抛弃它。说出不能被滥用的语言特征或模式。多重继承的主要问题是菱形 - 当您从具有公共基类的 2 个类继承时。如果您避免这种情况,则不会出现太多技术问题。
标签: java android keyboard android-softkeyboard extends