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, Any>): 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バージョンです:
_<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<Java.version>1.8</Java.version>
<kotlin.version>1.2.21</kotlin.version>
<dokka.version>0.9.15</dokka.version>
<spring.framework.version>4.3.1.RELEASE</spring.framework.version>
</properties>
_
問題はmethod = arrayOf()
にあると思いますが、これを修正するにはどうすればよいですか?
私はこれについてKotlinのリリースノートを読みました 非推奨:varargの単一の名前付き引数 、それは言う:
「アノテーション内の配列リテラルとの一貫性を保つため、名前付きフォーム(foo(items = i)
)でvarargパラメータに単一の項目を渡すことは非推奨になりました。対応する配列ファクトリ関数でスプレッド演算子を使用してください:
_foo(items = *intArrayOf(1))
_
このような場合に冗長なアレイの作成を削除する最適化があり、パフォーマンスの低下を防ぎます。単一引数のフォームはKotlin 1.2で警告を生成し、Kotlin 1.3では削除されます。」
しかし、それを修正する方法についてのヒントはまだわかりません。
廃止予定ではない形式はvalue = ["/privacy"], method = [RequestMethod.GET]
。
Kotlinでの注釈の使用方法に関するその他のドキュメントは、 here にあります。