いいえ、それは不可能です。2 つの解決策があります。
まず、2 つの名前を使用します。
public static Result getByLong(Long id) {
return ok("Long value: " + id);
}
public static Result getByString(String name) {
return ok("String value: " + name);
}
また、別のルートを使用する必要があります。そうしないと、タイプの不一致が発生します
GET /p-by-long/:id controllers.Monitor.getByLong(id: Long)
GET /p-by-string/:name controllers.Monitor.getByString(name: String)
2番目の解決策は、String引数を持つ1つのメソッドを使用し、Longに変換できるかどうかを内部的にチェックすることです
public static Result getByArgOfAnyType(String arg) {
try {
Long.parseLong(arg);
return ok("Long: " + arg);
} catch (Exception e) {
return ok("String: " + arg);
}
}
ルート:
GET /p/:arg controllers.Monitor.getByArgOfAnyType(arg : String)
それがあなたの質問に合わないことはわかっていますが、少なくとも時間を節約できます。また、String を数値型に変換できるかどうかを判断するためのより良い方法がある可能性があることにも注意してください。つまり、この質問では、String が Java で整数を表しているかどうかを確認する最良の方法は何ですか?