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