向自定义robotframework java库关键字添加可选的免费关键字参数

向自定义robotframework java库关键字添加可选的免费关键字参数,robotframework,Robotframework,我正在尝试在java库中创建一个与以下python库关键字等效的关键字: def findObjectFoo(String targetClass, String targetName = None, String targetText = None) targetClass始终是必需的。targetName和targetText是可选的。可以在不提供targetName的情况下提供targetText 使用重载时,我可以创建一个包含一个或两个字符串的函数,但我无法区分findObjectFo

我正在尝试在java库中创建一个与以下python库关键字等效的关键字:

def findObjectFoo(String targetClass, String targetName = None, String targetText = None)
targetClass始终是必需的。targetName和targetText是可选的。可以在不提供targetName的情况下提供targetText

使用重载时,我可以创建一个包含一个或两个字符串的函数,但我无法区分
findObjectFoo(targetClass,targetName)
findObjectFoo(targetClass,targetText)


在robotframework java库中如何实现这一点?

您刚才说过“可以在不提供targetName的情况下提供targetText”。从下文中可以看出,当给定targetName时,也必须提供targetText,这对于正常的方法重载来说是微不足道的。但同时,您引用的调用中只传递了targetName或targetText;由于方法签名可能是相同的(
(String,String)
,我想是吧?),编译器无法知道要调用哪个。虽然在这种情况下python更容易,但您仍然必须指定要传递的两个参数中的哪一个-例如,
findObjectFoo(class,targetText=txt)
在Java中,您可以使用
Java.util.Map
作为最后一个方法参数;您可以传递key:value对,如果未定义其中一个可选项,则返回默认值。