如何修复Kotlin中的警告:不建议使用命名forms将单个元素分配到可变参数

在将Kotlin从1.1.4升级到最新的1.2.22之后,我得到了很多构建警告:

[WARNING] ... (422, 29) Assigning single elements to varargs in named form is deprecated 

相关的代码是这样的:

 422 @RequestMapping(value = "/privacy", method = arrayOf(RequestMethod.GET)) 423 fun mainLinkPrivacy(request: HttpServletRequest, model: MutableMap): String { 424 425 var lang = request.getParameter("lang") 426 427 if(lang == null || lang.isEmpty()) 428 lang = "EN" 429 430 model.put("lang",lang) 431 432 return "/mobile/main/mainlink_privacy" 433 } 

这里是导入部分:

 import org.apache.ibatis.annotations.Param import org.springframework.beans.factory.annotation.Autowired import org.springframework.core.env.Environment import org.springframework.stereotype.Controller import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestMethod import org.springframework.web.bind.annotation.RequestParam import javax.servlet.http.HttpServletRequest 

这是我的Kotlin版本:

  UTF-8 1.8 1.2.21 0.9.15 4.3.1.RELEASE  

我认为问题存在method = arrayOf() ,但如何解决这个问题?

我读了关于这个弃用的Kotlin发行说明:可变参数的单个命名参数 ,它说:


“为了与注释中的数组文字保持一致,在命名表单( foo(items = i) )中传递可变参数的单个项目已被弃用。请使用带有相应数组工厂函数的spread运算符:

 foo(items = *intArrayOf(1)) 

在这种情况下,有一种优化可以消除冗余arrays的创建,从而防止性能下降。 单参数forms在Kotlin 1.2中产生警告,并将被放在Kotlin 1.3中。


但是我仍然不知道如何解决这个问题。

我认为不建议使用的forms是value = ["/privacy"], method = [RequestMethod.GET]

有关如何在kotlin中使用注释的更多文档可以在这里find