Java代码翻译成KS的常用规则
==========================

java写法：

![](media/07c130bf96832487cc1e7be4532c6abf.png)

ks脚本写法：

![](media/4e9aba10e4dbc7fa53b1d484c46f653a.png)

如上图：

- 方法的定义

   ks采用对象式写法，参数无类型。

-  空值的判断

   StringUtils工具类不支持脚本，采用string!=null&&string.trim().length()\>0替换。

- 方法的调用

   Java插件调用内部类，可以省略this，但ks不能省略。

- 方法的间隔

   ks采用对象式编程，方法与方法之间会有个逗号“,”隔开，最后一个方法可有可无。

- 变量的定义

   Ks的变量是弱类型，无论java什么类型，ks都是用var。

- super的使用

![](media/210011059d8ad1880bb53ac65a80cf60.png)

  java插件加上62行没什么问题，ks不行，需删除。

- 插件类对象的定义

   采用类对象的写法，如下图：

![](media/7f3834d1d25808b4e707d5552c2785b2.png)

![](media/3a73177eae514b25b8e8d94a8cf30806.png)

- try{}catch(){}的写法

![](media/a44d45d78f353e10a457eaf2fb2e6105.png)

![](media/1fdaab264eb8ce7d66a6afae417f386c.png)

- for循环的写法

![](media/7f27bbf87679f75045b468c20503b1c0.png)

![](media/12919a981ddc6fd32c65d7bc303ab036.png)

![](media/5b4fef0b0bb1d696aa71c069cd843084.png)

![](media/d8d96a494b8055699c8d456767f025b9.png)

- ks脚本不存在强类型转换

![](media/23e5dd434a488ded4f3de285d76edafc.png)

![](media/2cfdbeb8ab682bd95709e9061fdbba93.png)

- boolean值判断，不支持工具类

![](media/2070c06da035e722e99757cca5883cc4.png)

- 数组可以用[]，对象用{}

- ArrayList 对象的定义


```Java	
Array array = new ArrayList();
```	

```	KS
var array = new java.util.ArrayList();
```	

- 匿名内部类的写法：图1为jdk8的写法，图2为内部类，图3为脚本的写法

![](media/eef0d4c71a3ed03ee8b7c12467d2129e.png)

![](media/dee7fc2793de2fc084c80d50c310d3d4.png)

![](media/2bcb0342cd37e7c07fd6e9234f3e2c9b.png)

- 脚本中常用类型转换方法

![](media/01d0c3628c0540cc00ee524c29c95c7c.jpg)

 https://www.yunzhijia.com/docrest/file/downloadfile/5ba346b3db5aa6175d17fe0c?big

- 注意this不能作为方法参数，去掉后台方法

- 原生java类没有添加注解的，可以再代码里，写全类路径使用，如下

```	Java 
String formatStr = "###,##0." + StringUtils.repeat("0", amountPrecition);
```

```KS	 
var formatStr = "###,##0." + org.apache.commons.lang.StringUtils.repeat("0", amountPrecition);

```

- 数据库查询操作

```Java
String formId = “xxx”;
BusinessDataServiceHelper.loadSingle(formId, "bos_formmeta");
```

```KS
var formId = “xxx”;
BusinessDataServiceHelper.loadSingle(formId, "bos_formmeta");

```

- 数据库删除操作

```Java
QFilter[] filters = new QFilter[]{new QFilter("txt_object_id", QCP.equals, pageNumber)};
DeleteServiceHelper.delete("ide_unit_test_detail", filters);
```

```KS
var fileter = new QFilter("txt_object_id", “=”, pageNumber)
var filters = [fileter];
DeleteServiceHelper.delete("ide_unit_test_detail", filters);

```

- 定义hashMap、hashSet、ArrayList时，不用使用泛型：\<\>

- 脚本没有带返回值的方法


```Java
private BillEntityType getBillEntityType(){
	return  (BillEntityType)((IListView)this.getView()).getListModel().getDataEntityType();
}

```

```KS
getBillEntityType ：function(){
	return this.getView().getListModel().getDataEntityType();
}

```
