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

Android 注释参数必须是编译时常量,android,kotlin,retrofit,Android,Kotlin,Retrofit,这就是我想做的 @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<C

这就是我想做的

@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?>?
@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?>?

您需要做的是将
常量
类转换为
对象
,如下所示

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"
}
然后,您可以直接引用每个值,而不是为您需要的每个变量创建
常量
类的实例,如下所示

@FormUrlEncoded
@POST(“改装/POST/signup.php”)
抽象趣味报名(
@字段(常量。键名称)名称:字符串?,
@字段(常量键单元)单元:字符串?,
@字段(常量。密钥\密码)密码:字符串?,
):打电话?
@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?>?