Java char[] 字符数组转 String 字符串遇到的问题

最近微酷在学习 Java 最牛逼的开发框架Spring Boot,这两天学到了shiro安全框架,在写shiro 自定义密码验证规则时遇到一个很简单的问题,但因为 java 基础不扎实还小难为了一会,研究了下才解决。

问题描述

shiro 自定义密码验证规则需要重写doCredentialsMatch()方法,可以通过token.getCredentials()获取到用户登录时填写的密码,但类型是Object,断点调试发现是一个char[]数组,然后就在转 String 时死活转不过来了,得到的 string 是类似这样的:[C@4645fdb4

原因及解决方案:

自己写了一个 char[] 然后用网上找的方法转 string 是没有问题的,为什么这个密码不行呢,原来这个密码是 Object 类型,需要先强制转成 char[] 再去转 string 就没有问题了。

正确姿势:

String pwd = new String((char[]) token.getCredentials());`
//或者
String pwd = String.valueOf((char[]]))token.getCredentials());

20190414221401980.png

20190414221711996.png

最后修改:2019 年 04 月 14 日 10 : 28 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论