小白一个,JDK1.8的新增语法这些还不了解,正在学习
如下是一个转换工具类,用JDK1.7该如何写
public static class Functions{
/**yyyy-MM-dd**/
public static final Function<Object, Object> DateFormat = (Object obj)->{
if(obj!=null){
try{
return new SimpleDateFormat("yyyy-MM-dd").format(obj);
}catch(Exception e){
return null;
}
}
return null;
};
/**yyyy-MM-dd HH:mm:ss**/
public static final Function<Object, Object> DateTimeFormat = (Object obj)->{
if(obj!=null){
try{
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(obj);
}catch(Exception e){
return null;
}
}
return null;
};
/**true:是,false:否**/
public static final Function<Object, Object> BooleanDefault = (Object obj)->{
if(Boolean.TRUE.equals(obj))
return "是";
else if(Boolean.FALSE.equals(obj))
return "否";
return null;
};
}
这是调用的代码片段。这里的((Function)v).apply又该如何写
else if(v instanceof Function)
cell.put(keyName, ((Function<Object,Object>)v).apply(BeanUtils.getPropertyDescriptor(data.getClass(), fieldName).getReadMethod().invoke(data)));
public interface Function<T, R> {
R apply(T t);
}
(Object obj)-> {xxxx}相当于实现了Function接口匿名类的一个对象。
你可以用下面的方式代替
new Function(){
public Object apply(Object obj) {
return null;
}
};