2012-02-16 94 views
1

我想制作一个Minecraft插件,用插件中的插件替换其他插件中的方法,以便轻松定制插件。替换另一个类中的方法

有什么办法可以简单地用另一个类的方法替换一个类的方法吗?有点像使用@override,但它也会覆盖原来的方法。

+0

BCEL呢? – 2012-03-21 01:29:44

回答

0

您可以使用面向方面的框架(如AspectJ),通过围绕要覆盖的类的方法调用以及调用新方法来实现此目的。

+0

我该怎么做呢?我在Java中处于中级水平,我仍在学习。 :/ – CharDev 2012-02-16 04:18:17

+0

嗯,方面可能会有点多,如果你在中等水平。我会看看我能否抽取样本。同时,也许你可以更详细地描述你的问题,因为可能有其他解决方案。 – Perception 2012-02-16 04:30:14

+0

基本上我只想把一段代码放在另一个类/ jar /插件的方法中,而不需要直接修改插件。我基本上只是想要它加载第一个插件,然后加载第二个插件,第二个插件中的一个方法在第一个插件上“重叠”一个方法。当调用第一个插件的方法时,它将使用第二个插件中的方法。我试图尽可能描述,如果我还不清楚,我可以解释更多。 :p – CharDev 2012-02-16 04:36:22

0

没有办法修改一个方法来替换你自己的方法。

尽管您可以使用Java反射来替换您修改的某个实例。但你不能直接修改方法没有反射..

我的意思是这个。是扩展你的覆盖类中的一个类,并在持有它的文件中替换原始实例。

这样

这里的时候要小心是反思here一个很好的教程

您还可以进一步google它。

请注意。这种替换有点冒险。不鼓励在bukkit上这样做。特别是bukkit代码