2019-01-29 21:39
在 JDK 8 之下,如果方法参数是 Object ... paras 类型,并且传入的参数值是通过调用方法获取的,并且这个方法返回的是泛型的话,就会出现这个类型转换异常问题
也就是说要同时满足下面几个条件才会出现:
1:JDK 版本是 8 或更高
2:方法原型中带有一个 Object... paras 参数
3:传入参数时是方法调用,例如 record.get("title")、getAttr(...) 等等
4:第三条中的方法调用的返回值类型是泛型,例如上面的 record.get(...) 与 getAttr(...) 返回值类型都是泛型
解决办法极其简单,下面的方法任选其一:
1:使用强制类型转换,例如:findFirst(..., (Object)getAttr(...));
2:引入一个中间变量,例如:
Object para = getAttr(...);
findFirst(..., para);
解决方案都是为了消除 JDK 8 的 Object... 传参类型错误的问题,低版本 JDK 没有这个问题。
高版本的 JDK 或许是为了提升性能才有了这个变化
2019-01-28 14:58
@红星 如果觉得 @NoUrlPara 麻烦,可以在 controller 中调用一下:
checkUrlPara(0);
上面代码的 0 表示 urlPara 个数为 0,如果不是 0 则报 404,你可以指定成自己需要的,例如:
checkUrlPara(3);
上面的是允许 3 个 urlPara 存在