编程小知识
一、为什么 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 版权协议,转载请附上原文出处链接和本声明。