将Small talk方法名称和签名转换为Java方法名称和签名

时间:2012-09-06 10:18:06

标签: java smalltalk

我基本上在遗留系统上工作,遗留代码是用Smalltalk语言编写的,并尝试将Smalltalk中的一些方法转换为Java中的等效方法名称。这些是Smalltalk中名为Grid的类的一些方法名称。我不熟悉Smalltalk语法。 Java中相应的名称是什么,方法签名是什么样的?

  1. at: cell put: data
  2. foreColor: color1 backColor: color2 cell: cell

2 个答案:

答案 0 :(得分:7)

Smalltalk使用inline parameters - 类似于Objective C.在Java(以及从Algol派生的大多数其他语言)中,如果使用多于1个参数,则此样式是不可能的。因此,您必须使用约定将带有内联参数的Smalltalk消息转换为Java方法。

  • Cocoa Java bindings使用下划线加入消息名称,并按顺序附加参数:at_put(cell, data)foreColor_backColor_cell(color1, color2, cell)

  • 您还可以使用camel case的变体。这可能会导致名称冲突(例如,如果存在Smalltalk消息atPut,那么您无法将at:put:缩短为atPut

除了内联参数的转换之外,您还可能遇到Smalltalk代码使用保留关键字的问题。例如,for在Smalltalk中是完全有效的消息,但您不能将Java方法命名为for。如果遇到这种情况,你必须采用逃避策略 - 例如通过粘贴下划线使Java方法变为for_

答案 1 :(得分:2)

这是错误的工作方式,顺便说一下。如果您需要Java输出,请让有经验的smalltalker从源代码为您生成。 Smalltalk具有良好的反射功能,并且很容易生成java骨架。将smalltalk转换为遗留语言的更有趣的问题出现在块中并执行: