generics - Java template function -
i have function has return date
other times datetime
(joda-time).
static public <t extends object> t converttimeforserver(datetime tosave) { datetime temp = null; try { temp = tosave.withzone(datetimezone.forid(getservertimezone())); } catch (exception e) { } t toreturn = null; if (toreturn.getclass().equals(temp)) { return (t) temp;//return datetime } else { return (t) temp.todate();//return date } }
is right approach?
how use it?
like (timerhelper name of class):
datetime t = timerhelper.<datetime>converttimeforserver(new datetime()); date t2 = timerhelper.<date>converttimeforserver(new datetime()); or datetime t = (datetime)timerhelper.converttimeforserver(new datetime()); date t2 = (date)timerhelper.converttimeforserver(new datetime());
and how use function instead?
static public <t extends object> t current_moment(){ return converttimeforserver(new datetime()); }
this 1 of tricky areas of generics. way work take class argument, method knows type of object create. can't know @ moment, because of type erasure.
alternatively (much simpler) return datetime
, away generics here.
the client know wants, , if client wants date
, can create 1 datetime
far more trying do.
example:
client 1 wants datetime
:
datetime result = service.converttimeforserver(dt);
client 2 wants date
:
date result = service.converttimeforserver(dt).todate();
Comments
Post a Comment