【干货】Android根据类生成签名字符串

前言

昨天我们已经实现了《C#根据类生成签名字符串(附DEMO下载地址)》,因为与后台做通讯时有可能是多客户端的,今天我们把Android这个实现方式也做出来

视频效果

按照惯例我们直接上干货


核心代码


public String Signstr(T t){
            String str = "";
            //定义属性名列表
            List<String> lstfieldname = new ArrayList<>();
            //获取当前类里的所有属性
            Field[] fields = t.getClass().getFields();
            //遍历所有属性并把属性名称写入到List<String>中
            for (Field field : fields) {
                //判断是我们自己定义的属性名再写入
                if (!field.isSynthetic()) {
                    lstfieldname.add(field.getName());
                }
            }
            //对Lst<String>进行ASCII码进行排序
            Collections.sort(lstfieldname);
            //根据排序后的名称我们开始拼接字符串
            for (String fieldname : lstfieldname) {
                //获取属性值
                String fieldvalue = "";
                try {
                    fieldvalue = (String) t.getClass().getField(fieldname).get(t);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                str = str + fieldname + "=" + fieldvalue + "&";
            }
            //去掉字符串的最后一个&符号
            str = str.substring(0, str.length() - 1);

            return str;
        }


从上面的代码可以看出来,比昨天我们写的C#的要麻烦的多,最主要的原因还是C#的是Linq用起来确实方便顺手。

代码里的实现步骤:

  1. 定义生成属性名称字符串的List<String>

  2. 获取到把传入进来的泛型类的所有的属性字段数组,然后再插入到我们的List里面,注:在我们遍历字段的时候一定要判断field.isSynthetic()=false的,否则会列出一些系统里自带的属性如this,0等。

  3. 根据List属性名的进行ASCII的排序(Collections.Sort())

  4. 遍历我们的List属性名称,根据属性名称再找到对应的属性值值进行字符串的拼接

  5. 把最后一位多长来的拼接符去掉

  6. 输出字符串

代码编写

这里我们就没再新建一个安卓项目,用在我现在正在做的一个程序里面一个页面进行测试。页面上有一个textView

代码里面加载这个textView,然后写textView的事件。

通过上面可以看到我们也建了一个User的用户信息类,还有个一Sign就是我们用于生成签名的类

User用户信息类

列了四个字段,我们在构造函数里面直接给其赋值了,就不再多写代码。

Sign生成签名类


运行的结果

点击业务Fragment后显示新的结果

我们可以看出来已经按字符的ASCII排序生成我们的字符串了


-END-

长按下方二维码关注

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vaccae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值