日常总结 jackson注解,rest服务,泛型通配符

      最近在项目中遇到了几个jackson包提供的注解,分别是 1 jsonFormat 2 jsonSerialize 3jsonDeSerialize,了解了一下他们的用法jsonFormat可以用于Date属性的变量或者方法上,可以配合SpringMVC一起使用在,springmvc向客户端返回json值时,自动把日期类根据pattern参数转换成相应的格式,剩下两个适用于序列化和反序列化。可以配合rest风格服务开发时。对变量的格式进行制定,然后序列化发送给客户端或者反序列化从客户端接受数据。

      这里又说道了rest风格服务,之前没有了解过。在看到上面的后两个注解是一直不了解他们是何时被扫描到工作的,上网查了资料。了解到了由于借助项目需要用dubbox开发rest服务,而dubbox整合了jboss的restsasy框架,帮助开发者减少了配置。这里提供一个网址 在这里可以了解到rest应用的相关信息 :https://www.ibm.com/developerworks/cn/java/j-lo-jaxrs/ 

    然后又遇到了一个关于泛型的问题,在接口里写了几个返回值是泛型类的方法,

public <T> ApiResult<T> createXXX();

      这么写有一些其实有一些问题,由于返回值是ApiResult<T>类型的,T的类型并不确定,T类要放A类型并返回,编译器不并不会允许这么做,因为T类型和A类并不兼容,在这里T可以理解为已经固定了的类型,定义的返回值是apiResult<T>那么,只能返回apiResult<T>类,想要返回apiResult<A>类型就要进行强制转换成apiResult<T>类型,这么写未免有些麻烦,而且看着也不美观。但在接口里面定义这种样式的方法个人感觉还是有点规范的,所以并不想把每个方法返回值得T都替换成具体类。翻了书看到了通配符  ‘?’,想到了接口里面的方法可以不变,只要在实现类把方法变成
public ApiResult<?> createXXX();

的形式就可以返回任意类型的T而不用强制转换了。这样接口里的方法写的美观又不影响实现类。还是基础知识不扎实,对泛型部分的了解不深入,才会导致联想不到,需要翻书可以想到。还需要多多学习。

猜你喜欢

转载自blog.csdn.net/qq_35368651/article/details/81264698