【问题标题】:Using java Custom Annotation in kotlin在 kotlin 中使用 java 自定义注解
【发布时间】:2018-08-20 10:38:39
【问题描述】:

我在 java 中创建了一个自定义注解,我试图在 Kotlin 编写的类中使用它,但是在编译时,我收到了一个错误:

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

代码如下:

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.CLASS)
public @interface EdsFieldInfo {
  int persianName();
  String columnName() default "";
  int domainVals() default -1;
}

这是我使用注解的地方

@EdsFieldInfo(persianName = R.string.customer_file_id, columnName = "FileId")
@ColumnInfo(name = "FileId", typeAffinity = ColumnInfo.TEXT)
var fileId: String?,

错误显示在这里

persianName = R.string.customer_file_id

我试图为此找到解决方案,但不能帮我解决这个问题吗?谢谢。

【问题讨论】:

  • 问题出在第一行和第二行:persianName = R.string.customer_file_id, culomnName = "FileId" 主要是嫌疑人:persianName = R.string.customer_file_id - culomnName = "FileId" & name = "FileId" 看看:stackoverflow.com/a/50679302/4409113

标签: java android kotlin annotations


【解决方案1】:

由于R 是在编译时编译的,我高度怀疑您不能在注释中使用这样的R.string.customer_file_id 变量。也许它在 Android 的构建器真正构建 R 之前就已经进化了。

所以恐怕你应该改用一个常量。

【讨论】:

  • 没错,但我想知道在主项目中是如何工作的,在我将代码移动到库项目后它开始抛出此错误
  • 也许您的R.string.customer_file_id 仍在您的主项目中?如果您将代码移动到另一个模块,我相信它需要在该模块中。
  • 不,我很确定我也移动了相关字符串
猜你喜欢
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
  • 2018-10-25
  • 2021-08-06
  • 1970-01-01
相关资源
最近更新 更多