generic interface
public interface Callback<T> { T loadData(); }
API layer interface uses generics
public Object getObject(String key,Callback cacheCallback);
How the business layer specifically implements the interface
@RequestMapping(method = RequestMethod.GET, value = "/invoice-core/callback") @ResponseBody public Object callback(String key) throws BizException { Object res = redisCacheClient.getObject(key, new Callback<String>() { @Override public String loadData() { return "123"; } }); return res; }