首页 > 解决方案 > 不推荐使用的 kotlin 函数在纯 Java 项目上没有警告

问题描述

kotlin我有一个纯粹在库项目中编写的测试类。

class Test{

  @Deprecated(message = "Use other function")
  fun testFunction(id: String): Test {
      this.testId = id
      return this
   }
}

我已经弃用了带有注释的testFunction() 。DeprecatedBtwDeprecated类在 kotlin 包下。当我在 kotlin 项目中测试这个不推荐使用的功能时,它按预期工作(ide 显示不推荐使用的警告和删除线)

示例:测试()。测试函数(“测试”)

但是在 java 项目中,它不会显示警告或删除线来功能再见。当我打开已弃用函数的声明时,如下所示

  @Deprecated(
     message = "Use other function"
   )
  @NotNull
  public final Test testFunction(@NotNull String var1) {
     Intrinsics.checkParameterIsNotNull(var1, "id");
     this.testId = var1;
     return this;
   }

任何帮助,将不胜感激

标签: kotlinkotlin-java-interop

解决方案


kotlin.Deprecated在 Kotlin 中,标有注解的函数、属性和类也会在生成的 JVM 字节码中获得Deprecated属性。这允许 Java 编译器将它们视为已弃用并发出相应的警告。

以 Kotlin 中已弃用的此功能为例: https ://github.com/JetBrains/kotlin/blob/v1.3.50/libraries/stdlib/common/src/generated/_Ranges.kt#L171-L175 如果您尝试从java调用它

kotlin.ranges.RangesKt.intRangeContains(null, 1.0);

javac 编译器将报告以下警告:

Warning:(55, 31) java: intRangeContains(kotlin.ranges.ClosedRange<java.lang.Integer>,double) in kotlin.ranges.RangesKt___RangesKt has been deprecated

IDEA 和 Android Studio 也会将其标记为已弃用: IDE 中已弃用的检查


推荐阅读