- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
所以我有这个界面
public interface EventHandler<E extends EventObject>
{
public void handleEvent(E event);
}
我想为它派生处理事件的类,如下所示:
public class WorkingHandler implements EventHandler<MouseEvent>
{
public void handleEvent(MouseEvent event)
{
//handle event
}
}
上面的例子工作正常。但是编译器不会让我多次实现 EventHandler,因为非常令人沮丧的类型删除。
public class NotWorkingHandler implements EventHandler<MouseEvent>, EventHandler<KeyEvent>
{
public void handleEvent(MouseEvent event)
{
//handle mouse event
}
public void handleEvent(KeyEvent event)
{
//handle key event
}
}
几个问题...
编辑:我的意思是为什么 Java 有类型删除(反之亦然)
是否有任何类型的“mod”/“扩展”(缺少更好的词)或编程语言可以让我绕过类型删除?因为我没有使用旧版本的 Java,所以我不关心我的代码是否与旧代码兼容。
在 Java 语言中是否有任何变通方法可以用来绕过类型删除?
如果不是,有哪些替代方法可以在我的程序中编写事件处理代码来让编译器满意?
最佳答案
一个选择是使用 Guava EventBus向订阅者发布事件。它专为解决您目前面临的问题而设计。
有了它,您不需要实现任何接口(interface)...只需提供两个 @Subscribe
方法,如下所示:
@Subscribe
public void handleKeyEvent(KeyEvent event) { ... }
@Subscribe
public void handleMouseEvent(MouseEvent event) { ... }
有关它的一些附加文档可在 Guava 上找到 wiki .
关于java - Type Erasure 抬头,如何规避?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10166620/
假设我有一个像这样的字符串:'1 + 2 + 3 * 4' 是否可以从左到右(顺序?线性?)计算它,使其等于 24 而不 15? 我事先不知道该字符串是什么,所以它可能是“1 + 2”,也可能是“1
我在脚本中得到了这一行,它检查项目类: $('#post').attr('class'); 有没有机会,读起来像: $('#post*').attr('class'); 所以如果 ID 是 fe。 p
将我的工具链安装在与其供应商要求的目录不同的目录中后,我一直在运行一些较小的问题,通过适本地设置 COMPILER_PATH、C_INCLUDE_PATH、CPLUS_INCLUDE_PATH 和 L
我正在使用 boost::program_options,它与许多其他 C++ 库一样受到同样的困扰,甚至是 std 本身:它仍然使用 C 风格的空终止字符串,因为没有人真正喜欢弱 std::字符串.
Peter Norvig 在 PAIP 中说道: in modern lisps...eval is used less often (in fact, in Scheme there isno ev
我有一个这样工作的程序: prog.py filename -r 使用我给定的默认默认值 prog.py filename -r 0 500 20 使用 0、500 和 20 我已经成功地使用了: c
我正在使用 Java 程序进行一些图像处理,目前我正在处理一些相当大的图像(大约十亿像素)。 毫不奇怪,由于以下异常,我无法做很多事情: Exception: java.lang.IllegalArg
所以我想用Scrapy做一个steam游戏的刷屏器。我不知道为什么有些游戏没有显示在结果 csv/json 中。我认为这是因为年龄验证表。 我真的很想看看问题出在哪里......但一切似乎都应该有效。
我正在尝试控制我的表单以及用户如何通过表单元素的 tabindex 属性与它们交互。我的所有元素都指定了 tabindex,我希望这个值得到尊重并得到正确使用。 我目前正在 Mac/Firefox 上
我将实现一个简单的链表。这是我到目前为止的(工作)代码: pub struct LinkedList { start: Option>>, } impl LinkedList { pu
我遇到了 IE8 的 31 个 CSS 文件限制。 我在想,除非我弄错了,否则 Assets 管道会结合我的 CSS 文件进行生产,因此这不会成为问题。 然而,当我为 IE 调试时,这是一个问题。有没
我正在尝试在 Yacc/Bison 中创建一个 LALR(1) 解析器,它可以接受具有灵活语法的命令。一个例子是通过调整室温( float )、 window 位置(整数)和吊扇(枚举)来控制房屋中的
为了调试,我想用 JSON.stringify(myobject) 序列化 javascript 对象。但这给出了: TypeError: Converting circular structure
我正在使用交叉 musl 编译器(相同版本)构建 native musl 编译器 (GCC 8.3.0),但出现此错误: In file included from /usr/local/x86_64
我是一名优秀的程序员,十分优秀!