如何将一个对象转换为另一个对象?
How to cast a object into another?
首先,如果问题措辞错误。让我知道,我不确定如何表达这个问题。 ^^'
好的,现在,我正在开发一个插件 API 这样人们就可以更改程序的行为而无需修改源代码,而不会编程但仍想修改它的用户可以下载人们已经制作的其他插件。
现在,我正在研究事件系统,如果事件被触发,插件可以检测到对它的反应。我希望用户能够输入此代码:
handleEvent(Event e) {}
然后使用:
if(e instanceof <EVENTTYPE>) {
<EVENTTYPE> e2 = (<EVENTTYPE>) e;
// Do code here that could not be normally accessible without casting
}
但是我不知道该怎么做,所以我没有代码可以展示。但是,如果你想要我拥有的代码,它可以正常工作(除了这个,我说我不知道该怎么做)我可以给你。
任何 class 的 Subclass 可以向原始 class 添加额外的方法。如果一个类型为 subclass 的对象被一个类型为 superclass 的变量引用,那些额外的方法将不可见,因为变量的类型不知道它们。为了使额外的方法可用,需要将对象分配给正确类型的变量,这需要向下转型。这就是您的示例中发生的情况。
首先,如果问题措辞错误。让我知道,我不确定如何表达这个问题。 ^^'
好的,现在,我正在开发一个插件 API 这样人们就可以更改程序的行为而无需修改源代码,而不会编程但仍想修改它的用户可以下载人们已经制作的其他插件。 现在,我正在研究事件系统,如果事件被触发,插件可以检测到对它的反应。我希望用户能够输入此代码:
handleEvent(Event e) {}
然后使用:
if(e instanceof <EVENTTYPE>) {
<EVENTTYPE> e2 = (<EVENTTYPE>) e;
// Do code here that could not be normally accessible without casting
}
但是我不知道该怎么做,所以我没有代码可以展示。但是,如果你想要我拥有的代码,它可以正常工作(除了这个,我说我不知道该怎么做)我可以给你。
Subclass 可以向原始 class 添加额外的方法。如果一个类型为 subclass 的对象被一个类型为 superclass 的变量引用,那些额外的方法将不可见,因为变量的类型不知道它们。为了使额外的方法可用,需要将对象分配给正确类型的变量,这需要向下转型。这就是您的示例中发生的情况。