Если вы ищете «чистое» решение - я не думаю, что оно есть. Но вы могли бы сделать это:
@PATH("/items/{identifier}")
public String getItem(@PathParam("identifier") String identifier){
try {
return getByID( Long.parseLong(identifier) );
} catch (NumberFormatException ex) {
return getByName( identifier );
}
}
Кроме того, это не скомпилируется - нет такого метода, как typeOf()
:
if(identifier.typeOf().equals(String.typeOf()))
Я думаю, вы имели в виду:
if (identifier instanceof String)
РЕДАКТИРОВАТЬ : В любом случае, ваша первоначальная идея (установка типа параметра на Object
, а затем проверка на точный тип экземпляра) не сработает; у контейнера нет возможности узнать, что элемент path может быть целым числом, поэтому он не будет пытаться проанализировать его как целое число, а будет просто выдавать String
каждый раз.