Tag: 注释

将单个元素分配给Kotlin注释中的IntArray值属性

我有一个声明为自定义注释 @Target(AnnotationTarget.FUNCTION) annotation class Anno(val value: IntArray, val attr2: Int = 0) 对于单个元素声明,我可以在Java类中使用上面的注释 @Anno(1) 但是在Kotlin课上写同样的内容时,我必须把括号括起来 @Anno([1]) 在这种情况下,括号不是不必要的,还是我声明注释是错误的? 我正在使用Kotlin版本1.2.0-rc-39

如何在Kotlin中使用Swagger @ApiResponses注解?

如何将以下Swagger注释从Java转换为Kotlin? @ApiResponses(value = { @ApiResponse(code = 200, message = "Given admin user found"), @ApiResponse(code = 404, message = "…"), @ApiResponse(code = 500, message = "…"), @ApiResponse(code = 400, message = "…"), @ApiResponse(code = 412, message = "…") }) 这不起作用: @ApiResponses(value = listOf( ApiResponse(code = 200, message = "…"), ApiResponse(code = 404, message = "…"), ApiResponse(code […]

Kotlin注解处理会忽略具有相似名称的项目

我最近把我的大部分项目都转换成了kotlin。 现在我遇到了几个似乎与注释库有关的不寻常的错误。 不用说,它并没有在Java中发生。 我将描述这些案例 – 一个在匕首,另一个在Butterknife。 1.在具有相同名称的不同模型中使用2个@Provides方法时。 例如在具有“provideFooOrBar”方法的文件“FooProvider.kt”中 @Module class FooProvider(private val view: FooActivity) { … @Provides @FooScope fun provideView() = view @Provides @FooScope fun provideFooOrBar() = Foo() } 和另一个文件“BarProvider.kt”具有相同的方法名称 @Module class BarProvider(private val view: BarActivity) { … @Provides @BarScope fun provideView() = view @Provides @BarScope fun provideFooOrBar() = Bar() } 在这种情况下,Dagger无法生成一些工厂库,并且出现以下编译错误: Error:(27, 32) error: […]

kotlin注释处理器中的可空类型

我正在为Kotlin处理注释处理程序,因为处理的元素是用Java编写的,所以我没有收到可空的数据? 而不是@Nullable注释,这很好,但我正在接受类型和高阶函数中的空参数的问题,正常的参数。 var someNullField: String? = "" 我将在其注释中使用@org.jetbrains.annotations.Nullable来接收java.lang.String 。 但是List<String?>例如会返回我java.util.List<java.lang.String>而不会在主要元素中没有任何注释,而不会在导致未知可空性状态的类型参数中 我尝试使用javax.lang.model.util.Types来找到某种结果,但没有。 我现在使用的一些代码: val utils = processingEnvironment.typeUtils val type = fieldElement.asType() if (type is DeclaredType) { val typeElement = utils.asElement(type) type.typeArguments .forEach { //Trying different ways and just printing for possible results val capture = utils.capture(it) val erasure = utils.erasure(it) val element = utils.asElement(it) printMessage("element: $element […]

Kotlin kapt无法看到支持注释

我把一个枯燥的Java项目加入了kotlin。 一切编译和工作,直到添加注释处理kapt。 现在,我得到java.lang.IllegalStateException: failed to analyze: org.jetbrains.kotlin.kapt3.diagnostic.KaptError: Error while annotation processing 和一堆显示的警告是e: @Retention(RetentionPolicy.SOURCE) e: ^ e: symbol: class Retention e: location: class RegistryDef 和 e: @StringDef({ASCENDING_ORDER, DESCENDING_ORDER, SortOrder.UNKNOWN}) e: ^ e: symbol: class StringDef e: location: class RegistryDef 我明确地将支持注释添加到项目中,以确保它们包含在内,并使用Gradle将所有版本强制为最新版本。 有没有人经历过这个,你是如何解决它的?

kotlin-kapt插件不使用“kapt.generateStubs”

我最近从Android Studio 2.3更新到3.0,kotlin 1.1.4到1.1.51 。 现在我在我的gradle控制台中看到这条消息: kotlin-kapt插件不使用“kapt.generateStubs” 我有这在我的build.gradle让我的项目使用注释处理一些库工作: kapt {generateStubs = true} generateStubs行不再需要,可以安全地删除? 还是有另一个行动,我应该采取消除上述警告消息?

如何在Kotlin注释中声明数组值?

我在Kotlin创建自己的注释时遇到了一些问题。 我必须创建一些注释,并在其中一些我需要声明与数组类型的值。 在Java中,我们可以这样做: public @interface JoinTable { … JoinColumn[] inverseJoinColumns() default {}; … } JoinColumn也是一个注释类型。 我想在科特林做这样的事情: annotation class JoinTable( val name: String, val joinColumns: Array<JoinColumn> ) 我也试图做到这一点: annotation class JoinTable( val name: String, val joinColumns: List<JoinColumn> ) 但是我的IDe说: 注释成员的类型无效 我该怎么办? 谢谢!

Kotlin支持@ColorInt Java注释

Kotlin是否支持像@ColorInt这样的java注释,因为我不能让它工作。 我可以使用@ColorInt注释一个颜色,但是实际上并没有为这个注释获得lint检查。 例 fun setStatusBarColor(@ColorInt color){ window.setStatusBarColor(color) } 通过R.color.colorPrimary ,不显示棉绒。 应该用R.color.colorPrimary显示lint,不要用resources.getColor(R.color.colorPrimary)

在Java中为Kotlin编译器注释类型参数

在Java中,我有以下方法: public Optional<Foo> getFoo() { // always return some non-null value } 在Kotlin代码中,这个方法的返回类型是Optional<Foo!>! 。 通过使用@Nonnull注解,我可以将其降低到Optional<Foo!> (即只有Foo类型不再被空值检查)。 有没有一种方法来注释的方法,使Kotlin编译器空检查正确的返回值?

Android注释与Kotlin

我不能用Kotlin Android Project运行Android Annotation。 当我尝试运行与MainActivity_的链接我的应用程序,我的应用程序崩溃。 但我用@EActivity标记Activity类 无法实例化活动ComponentInfo {ru.lionzxy.jetbrainsintership / ru.lionzxy.jetbrainsintership.MainActivity_} 我尝试添加 kapt { generateStubs = true arguments { arg("androidManifestFile", variant.outputs[0].processResourcesTask.manifestFile) } } 和 kapt "org.androidannotations:androidannotations:$AAVersion" compile "org.androidannotations:androidannotations-api:$AAVersion" 在我的build.gradle文件中。 清理和建立。 并得到这个错误: 错误:执行任务':app:kaptDebugKotlin'失败。 编译错误。 查看日志了解更多详情 我的日志文件在/app/build/outputs/logs/manifest-merger-debug-report.txt中: https ://gist.github.com/LionZXY/bf398a3b64f787a56d985a5a0ea03bfe 我不明白为什么它不起作用。 我的完整build.gradle: https ://gist.github.com/LionZXY/4e672579fe89ad22cea07d2fe15a1621