千家信息网

Android中怎么根据类生成签名字符串

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,今天就跟大家聊聊有关Android中怎么根据类生成签名字符串,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。public String Sign
千家信息网最后更新 2025年02月03日Android中怎么根据类生成签名字符串

今天就跟大家聊聊有关Android中怎么根据类生成签名字符串,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

public String Signstr(T t){

String str = "";
//定义属性名列表
List lstfieldname = new ArrayList<>();
//获取当前类里的所有属性
Field[] fields = t.getClass().getFields();
//遍历所有属性并把属性名称写入到List
for (Field field : fields) {
//判断是我们自己定义的属性名再写入
if (!field.isSynthetic()) {
lstfieldname.add(field.getName());
}
}
//对Lst进行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

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

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

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

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

  6. 输出字符串

代码编写

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

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

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

User用户信息类

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

Sign生成签名类


运行的结果

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

看完上述内容,你们对Android中怎么根据类生成签名字符串有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0