编程小知识

一、为什么 url 中的中文被装换为 %**

URL 为 utf-8 编码,中文转成 utf-8 就需要转义一下, %** 表示这是一个要转义的字符,其他的特殊字符像空格是 %20 等,也要转义的。

不用转义的字符是英文数字等。

需要转义的原因是各种可能无法直接转换,比如 utf-8 可以转化成 Unicode,不能直接转化成 gb2312,但是 Unicode 能直接转化成 gb2312

二、Java 编程知识

(1)MAP 初始化并赋值

            Map<String, String> paramMap = ImmutableMap.<String, String>builder().put("metaTableCode", metaTableCode).build();

(3)使用 fastjson 将实体对象转换为 map

			LabelGroupListParam labelGroupListParam = new LabelGroupListParam();
			HashMap<String, String> paramMap = JSON.parseObject(JSON.toJSONString(labelGroupListParam), new TypeReference<HashMap<String, String>>() {
            });

(4)List 初始化并赋值

            List<String> keyList = new LinkedList<String>() {{
                    add("name");
                    add("id");
                }};
			List<String> expectedList = Arrays.asList("O00000H4", "200002", "测试实体");

(5)使用 fastjson 将实体对象转换为 String

paramString = JSONObject.toJSONString(sceneParam);

(6)Raw use of parameterized class ‘xxxx’ 警告

    🌾多种形式的代码都会出现此类警告,这里这阐述原因和解决办法:

  • 原因:直接使用原生态类型去实现,使用原生态类型会丢失泛型在安全性和表述性方面的优势
  • 解决:使用 <xx> 去指定使用的具体类型

其他知识:

  • 在参数化类型使用 instanceof 的行为是非法的,而使用无限制通配符代替原生态类型,对 instanceof 不会产生任何影响;
  • 创建泛型、参数化类型或者类型参数的数组是非法的;

原因:泛型信息可以在运行时被擦除;泛型,只存在于代码的编译阶段,并且会在运行时候擦除它们的元素类型信息。擦除就是使泛型可以与没有使用泛型的代码可以随意进行互用;

(7)实体转 MAP

			LabelGroupListParam labelGroupListParam = new LabelGroupListParam();
            HashMap<String, String> paramMap = JSON.parseObject(JSON.toJSONString(labelGroupListParam), new TypeReference<HashMap<String, String>>() {
            });

三、TestNG 使用

(1)SAXParseException

SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。

问题原因

在 idea 中创建 xml 文件是,不会自动生成 xml 声明,xml 声明一般是 xml 文档的第一行;xml 声明由version 和 encoding 两部分组成,如下

<?xml version = "1.0" encoding = "UTF-8"?>

表示该文档符合 xml 1.0 规范且默认编码方式为 UTF-8,程序读取文档时没有读到它的声明,就会导致解析报错

还有不会生成 xml 文档的 DTD,他代表了本文档的类型,规定了能在本文档中使用那些标记,如下

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

版权声明:本文为qq_27009225原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>