使用外部代码的方法(Java)

时间:2012-03-04 03:38:45

标签: java methods

我目前正在开发Java图形API,并希望实现轻松自定义。我想到的部分原因是能够用自定义代码替换标准代码。为了实现这一点,我想知道我是否可以在外部可交换文件中使用我的代码引用代码的方法(可能用或不用其他语言编写,例如RhinoScript)。例如,如果使用API​​的人感觉特定方法的代码效率低下,他们可以用他们认为更有效的代码替换方法引用的文件和他们自己的文件。

我理解接口和抽象类可能是实现这一目标的一种选择,但我觉得我所描述的方法,如果可以实现,将具有可重用代码的优势,使用不同脚本语言更容易实现API,并且通常更容易修改代码的方法。

我要问的底线是:是否可以让一个方法执行代码包含在一个独立文件中(只包含该方法将执行的代码),这可能会也可能不会写入语言与Java分开,如果是这样,我将如何进行此操作或我应该为此研究哪些主题?

最后,如果在本论坛上提出这个问题不是一个可接受的问题,或者我没有明确说明我的问题,我会道歉。

3 个答案:

答案 0 :(得分:2)

我认为这不是要走的路,如果你想为你的库提供自定义,接口和抽象类是你最好的选择。实现其他语言的包装器效率非常低,而且可能相对较慢,甚至没有从它添加到代码中的复杂性开始。你打算如何传递参数?收到返回值?在运行时或语法错误的情况下管理异常?

当然这一切都是可能的,但作为一名开发人员,我绝不会使用像您所描述的那样工作的API。

答案 1 :(得分:0)

通常我建议使用以下方法之一:

  • 定义自定义代码需要实施的界面
  • 提供(可能的抽象)基类,自定义代码可以通过继承扩展

您选择哪一个取决于您,通常基类对于人们来说更容易使用(因为他们只需要覆盖他们想要更改的特定方法),而接口可以提供更好的抽象,并且可以是从长远来看,它更灵活/可维护。

如果这些解决方案不适合您,那么您始终可以使您的项目开源 - 那么具有更好实施的人可以将他们的改进贡献回主代码库。

如果你真的想在另一个语言中允许扩展,那么我仍然认为接口/基类是可行的方法:许多其他JVM语言允许你扩展Java类或实现接口。然后将它留给用户生成他们喜欢的任何代码。

答案 2 :(得分:0)

你要求做的事听起来就像是反思A.P.I.可以提供:

可扩展性功能

应用程序可以通过使用完全限定名称创建可扩展性对象的实例来使用外部的用户定义类。

在此处阅读更多内容:

http://docs.oracle.com/javase/tutorial/reflect/