Java 如何将一个对象投射到另一个对象?
首先,如果问题措辞错误。让我知道,我不知道这个问题怎么说。^^' 好的,现在,我正在开发一个插件API,这样人们就可以在不修改源代码的情况下改变程序的行为,而那些不能编程但仍想修改的用户可以下载其他已经制作的插件。 现在,我正在开发一个事件系统,如果触发了一个事件,插件可以检测到一个用户对它的反应。我希望用户能够输入以下代码:Java 如何将一个对象投射到另一个对象?,java,api,events,plugins,reflection,Java,Api,Events,Plugins,Reflection,首先,如果问题措辞错误。让我知道,我不知道这个问题怎么说。^^' 好的,现在,我正在开发一个插件API,这样人们就可以在不修改源代码的情况下改变程序的行为,而那些不能编程但仍想修改的用户可以下载其他已经制作的插件。 现在,我正在开发一个事件系统,如果触发了一个事件,插件可以检测到一个用户对它的反应。我希望用户能够输入以下代码: handleEvent(Event e) {} 然后使用: if(e instanceof <EVENTTYPE>) { <EVENTTYPE
handleEvent(Event e) {}
然后使用:
if(e instanceof <EVENTTYPE>) {
<EVENTTYPE> e2 = (<EVENTTYPE>) e;
// Do code here that could not be normally accessible without casting
}
if(e instanceof){
e2=()e;
//在这里执行不强制转换就无法正常访问的代码
}
但我不知道如何做到这一点,所以我没有代码显示。但是,如果你想要我所拥有的代码,它可以很好地工作(除了这个,我说我不知道怎么做),我可以给你 任何类的子类都可以向原始类添加额外的方法。如果类型为该子类的对象被类型为超类的变量引用,那么这些额外的方法将不可见,因为变量的类型不知道它们。为了使额外的方法变得可用,需要将对象指定给正确类型的变量,这需要向下转换。你的例子就是这样 请注意,您不能强制转换对象,只能转换引用(和基本体)。您的问题是什么?你是在问如何实现一个事件机制吗?不,我已经在工作了,我的意思是我想这样做,如果一个插件正在侦听主事件类本身,而不是一个特定的事件类,那么当PluginManager将它抛出给所有正在侦听的插件时,就这样做,我可以这样做,插件可以使用上面的代码,并将主事件对象强制转换为某个事件(如果该事件是被抛出的事件)。是的,我知道这一点。但我使用的是反射,因为这是我软件上的插件用来扩展它的API,而不是其他软件用来扩展自己的API。我在问,当我的软件触发事件让插件做出反应时,如果事件有子类,用户可以将其强制转换到它,然后使用通常不可访问的函数,除非专门听。但是,谢谢你的帮助!对不起,我没听清你的要求没关系,我在现实生活中经常这样做:堆栈溢出