私はこのような方法を持っています:
def getInformation () {
return [true, "reason why"]
}
私はこのように使用しています
def (isClear, reason) = getInformation()
このメソッドの戻り値の型を定義する方法はありますか?そのため、誰かがメソッドを通過しているときに読む方が良いですか?
'def' を使用して宣言したため、このメソッドの実際の戻り値の型は Object です。これは、実際に返すオブジェクトに関係なく、何でも返すことができることを意味します。
次のコードも同様に有効です。
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 を使用することは決してありません。
戻り値の型は List になります。より正確には、Boolean、String 型の 2 つの要素を持つ ArrayList です。
また、一般的な List は単一の型 (この場合は Object) しか持てないため、複数の戻り値の型を定義する方法はありません。