我基本上在遗留系统上工作,遗留代码是用Smalltalk语言编写的,并尝试将Smalltalk中的一些方法转换为Java中的等效方法名称。这些是Smalltalk中名为Grid
的类的一些方法名称。我不熟悉Smalltalk语法。 Java中相应的名称是什么,方法签名是什么样的?
at: cell put: data
foreColor: color1 backColor: color2 cell: cell
答案 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转换为遗留语言的更有趣的问题出现在块中并执行: