注释参数必须是编译时常量

问题描述 投票:0回答:2

这就是我想做的事情

@FormUrlEncoded
@POST("retrofit/POST/signup.php")
abstract fun signUp(
    @Field(Constant().KEY_NAME) name: String?,
    @Field(Constant().KEY_CELL) cell: String?,
    @Field(Constant().KEY_PASSWORD) password: String?,
): Call<Contacts?>?

我在

Constant().KEY_NAME
Constant().KEY_CELL
Constant().KEY_PASSWORD

上遇到错误

错误:注释参数必须是编译时常量

持续上课。

class Constant {
  val BASE_URL = "http://istiak.ga/app/"

  val KEY_NAME = "name"
  val KEY_PASSWORD = "password"
  val KEY_CELL = "cell"
}

android kotlin retrofit
2个回答
3
投票

您需要做的是将您的

Constants
类转换为
object
,如下所示

object Constants {
 const val BASE_URL = "http://istiak.ga/app/"

 const val KEY_NAME = "name"
 const val KEY_PASSWORD = "password"
 const val KEY_CELL = "cell"
}

然后您可以直接引用每个值,而不是为您需要的每个变量创建

Constants
类的实例,如下所示

@FormUrlEncoded
@POST("retrofit/POST/signup.php")
abstract fun signUp(
    @Field(Constant.KEY_NAME) name: String?,
    @Field(Constant.KEY_CELL) cell: String?,
    @Field(Constant.KEY_PASSWORD) password: String?,
): Call<Contacts?>?

0
投票

可能为时已晚,但是如果有人遇到同样的问题:这是我的解决方法:

@Value("\${stripe.key}")
private val stripeKey: String? = null

@GetMapping("/index")
fun sayHello(): ResponseEntity<String>{
    return ResponseEntity( "Hello from Index Controller", HttpStatus.OK)
} 

\ 大括号前面解决了我的问题

© www.soinside.com 2019 - 2024. All rights reserved.