我有这样的方法:
def getInformation () {
return [true, "reason why"]
}
我这样使用
def (isClear, reason) = getInformation()
有没有办法为这个方法定义一个返回类型,以便在有人通过该方法时更好地阅读?
此方法的真正返回类型是 Object,因为您使用 'def' 声明了它。这意味着它可以返回任何东西,而不管您实际返回的对象是什么。
以下代码同样有效:
def getInformation () {
return "this is some information"
}
或者
def getInformation () {
return 42
}
但是方法的返回类型没有改变。
这里真正的问题是:你为什么会选择这样的方法?在我看来,以下内容会使事情变得更加清晰:
Result getInformation() {
return new Result(success: true, reason: "why")
}
这将使调用者更加清楚,并且您唯一需要创建的是一个微不足道的类:
class Result {
boolean success
String reason
}
现在您已经有了一个明确定义的 API。由于您在这里面临的问题,我永远不会在方法签名中使用 def 。
Anthony, better in your case to return a map [isClear:true, reason:"reason why"]
. Then in your code get values:
Map getInformation () {
return [isClear:true, reason:"reason why"]
}
...
def result = getInformation ()
if(result.isClear){
...
result.reason
...
}
返回类型将是 List,更准确地说是 ArrayList,其中包含 Boolean、String 类型的两个元素
由于泛型 List 只能是单一类型(在本例中为 Object),因此您无法定义多个返回类型。
有没有办法为这个方法定义一个返回类型,以便在有人通过该方法时更好地阅读?
不是真的,你可以把它改成这样,但也好不到哪里去:
List getInformation () {
return [true, "reason why"]
}
但是,您可以定义分配返回值的变量的类型,这使得该部分代码更具可读性。
def getInformation () {
return [true, "reason why"]
}
def (boolean isClear, String reason) = getInformation()