web-dev-qa-db-ja.com

Kotlinでの警告を修正する方法:名前付きフォームでvarargsに単一の要素を割り当てることは非推奨です

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では削除されます。」


しかし、それを修正する方法についてのヒントはまだわかりません。

14
gary

廃止予定ではない形式はvalue = ["/privacy"], method = [RequestMethod.GET]

Kotlinでの注釈の使用方法に関するその他のドキュメントは、 here にあります。

16
asm0dey