我有一个函数有时必须返回一个Date
其他时候DateTime
(乔达时间)。
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
}
}
这是正确的方法吗?
如何使用它?
像这样(timerHelper是类的名称):
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());
以及如何使用这个功能呢?
static public <T extends Object> T current_Moment(){
return convertTimeForServer(new DateTime());
}
我怀疑你在这里尝试使用泛型太聪明了。因为返回类型没有多态性并不意味着您应该求助于泛型来尝试实现该效果。
您可以简单地通过两种方法来实现:public static Date convertToDateForServer(DateTime toSave) {...}
and public static DateTime convertToDateTimeForServer(DateTime toSave) {...}
。调用代码似乎知道它想要什么,因此它可以简单地调用所需的方法。如果这两种方法确实存在复杂的共性,请创建一个两者都可以在内部调用的私有方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)