Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在纯java项目上未警告已弃用的kotlin函数_Kotlin_Kotlin Java Interop - Fatal编程技术网

在纯java项目上未警告已弃用的kotlin函数

在纯java项目上未警告已弃用的kotlin函数,kotlin,kotlin-java-interop,Kotlin,Kotlin Java Interop,我有一个测试类,它完全是用库项目中的kotlin编写的 class Test{ @Deprecated(message = "Use other function") fun testFunction(id: String): Test { this.testId = id return this } } 我已经用弃用的注释弃用了testFunction()。顺便说一句,kotlin软件包中包含已弃用的类。当我在kotlin项目中测试这个不推荐使用的函数

我有一个测试类,它完全是用库项目中的
kotlin
编写的

class Test{

  @Deprecated(message = "Use other function")
  fun testFunction(id: String): Test {
      this.testId = id
      return this
   }
}
我已经用
弃用的
注释弃用了testFunction()。顺便说一句,kotlin软件包中包含已弃用的类。当我在kotlin项目中测试这个不推荐使用的函数时,它会按预期工作(ide显示不推荐使用的警告和删除线)

示例:Test()。testFunction(“测试”)

但是在java项目中,它并没有显示警告或删除线来运行ide。当我打开弃用函数的声明时,如下所示

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

在Kotlin中,使用
Kotlin标记的函数、属性和类将得到任何帮助。不推荐使用的
注释也会在生成的JVM字节码中获得该属性。这允许Java编译器将它们视为已弃用,并发出相应的警告

以Kotlin中不推荐使用的此函数为例: 如果您尝试从java将其称为

kotlin.ranges.RangesKt.intRangeContains(null, 1.0);
javac编译器将报告以下警告:

警告:(55,31)kotlin.ranges.RangesKt\uuuuuu RangesKt中的java:intRangeContains(kotlin.ranges.ClosedRange,double)已被弃用
IDEA和Android Studio也会将其标记为已弃用:

那么您在Java中使用了Kotlin的
@Deprecated
-注释?您使用哪种IDE和版本?我使用的是
android studio 3.5.0
,我的kotlin版本是
1.3.31
,您可能希望对java变体使用
java.lang.Deprecated
。。。然而,似乎有一个问题,尽管如此。。。如果函数在同一个文件中,则只有在使用代码完成时,才会出现穿透,但对于编写的代码,则不会出现穿透。。。但是,它适用于其他文件中不推荐使用的函数。。。也许你想打开一个合适的问题,如果还没有…我找到了解决办法,我导入了java的defracted注释作为别名
import java.lang.Deprecated作为JavaDeprecated
,并添加了不推荐使用的函数,现在它可以工作了@JavaDeprecated@Deprecated(message=“Use other function”)@NotNull公共最终测试testFunction(@NotNull String var1){Intrinsics.checkParametersNotnull(var1,“id”);this.testId=var1;返回this;}```