Articles of 注释

更新到Android Studio 2.3后无法构建

当我尝试构建项目时会出现两个警告: 警告:使用不兼容的插件进行注释处理:android–apt。 这可能会导致意外行为。 并且在所有绑定错误结束时: 警告:任何处理器都无法识别以下选项:'[android.databinding.artifactType,android.databinding.printEncodedErrors,android.databinding.minApi,android.databinding.isTestVariant,android.databinding.enableDebugLogs,android.databinding.sdkDir, android.databinding.bindingBuildFolder,android.databinding.enableForTests,android.databinding.modulePackage,android.databinding.generationalFileOutDir,android.databinding.xmlOutDir]’ 我试图启用注释处理器并删除所有apt引用并更改此: apt’com.jakewharton:butterknife-compiler:8.2.1′ 对此: annotationProcessor’com.jakewharton:butterknife-compiler:8.2.1′ 但它不起作用。

带有@Inject注释的ProGuard和RoboGuice问题

我在优化我的Android应用程序时遇到了一些proguard问题。 似乎对注释类(@ com.google.inject.Inject)做了一些事情,Dalvik / Harmony在运行时不满意。 java.lang.annotation.IncompleteAnnotationException:注释com.google.inject.Inject的元素可选元素不完整 com.google.inject.Inject看起来像这样(Guice的一部分): @Target(value={ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD}) @Retention(value=java.lang.annotation.RetentionPolicy.RUNTIME) @Documented public abstract @interface com.google.inject.Inject extends Annotation { public abstract boolean optional() default false; } 这是发布失败: 04-07 09:48:00.864: ERROR/AndroidRuntime(9384): FATAL EXCEPTION: main 04-07 09:48:00.864: ERROR/AndroidRuntime(9384): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bitgrind.wtb/com.bitgrind.wtb.activity.Main}: com.google.inject.bq: com.google.inject.bq: java.lang.annotation.IncompleteAnnotationException: The element optional is not complete for the annotation com.google.inject.Inject […]

是否有用于检查字符串参数模式的android注释?

问题 我正在使用Android和Kotlin,我希望有一个注释来检查常量String参数(对于函数或构造函数)是否与某个模式(正则expression式)匹配。 我读到了关于模式注释的内容 ,但我不确定它是否适用于我的问题以及它是否适用于Android。 所以,当我有这样的代码 fun foo(@MatchesPattern(“a*b”) bar: String) = println(bar) 然后 foo(“aaaab”) 应该编译得很好,但是 foo(“bb”) 不应该。 这可能,最好没有任何第三方库吗? 如果是,我将如何实现这样的注释? (对不起,我不熟悉编写我自己的自定义注释) 背景 我希望将带有连字符分隔音节的单词作为parameter passing,但是一个单词不应超过3个音节(这意味着每个单词最多2个连字符)。 我知道我也可以使用默认的params实现这一点,但我认为注释将是一种更优雅的方式来实现这一点。

Android注释 – 注入超类types列表

我正在尝试使用Android Annotations实现以下Spring代码: @Autowired public initHandlerList(List handlerList) { // Do stuff with the list … } 我尝试使用接口和类。 Bean定义: @EBean public AbstractHandler implements Handler {} 试图注入: @Bean public initHandlersList(List handlersList) { // Do stuff with the list … } 但总是得到以下错误: Error:(20, 5) error: org.androidannotations.annotations.Bean can only be used on an element annotated with @org.androidannotations.annotations.EBean 所以我想因为列表本身没有用@EBean注释它不能用作Bean …任何使用Android Annotations实现它的方法? […]

使用@StyleableRes注释的obtainStyledAttributes。 抑制警告

在看这里的答案时,我遇到了问题: TypedArray ta = obtainStyledAttributes(R.style.MyCustomStyle, attrs); 似乎Android Studio不允许我传入一个不是来自R.styleable资源的int而没有得到警告。 它告诉我它需要一个types为styleable的资源,我假设这意味着我调用的代码已经使用@StyleableRes注释进行了注释 阅读R.style {x}中定义的值的最佳行动方案是什么? 链接post上接受的答案有效并且编译,但我不知道如何压制警告。 因为有警告,压制是否安全? 如果是这样,怎么样?

在注释中使用@hide隐藏方法/类

我正在开发一个用于android的库(jar),我遇到的情况是我希望我的类或方法只能在我的库中访问,但不能在我的库之外访问。 使用no修饰符将使该类在该包中可访问,但我处于这样一种情况:如果没有public修饰符则不能使用此类,因为使用no修饰符将使其在我不想要的其他包中不可访问。 例如,我有一个class级说, public class Globals { public static String thisDeviceAddress; public static String thisDeviceIP; public static String thisDeviceName = “”; } 这个课程随处可见。 问题是我希望它可以在我正在开发的库中访问,但不能在库外部访问。 我已经知道使用注释@hide将解决问题。 例如: /** * @hide */ class Globals { public static String thisDeviceAddress; public static String thisDeviceIP; public static String thisDeviceName = “”; } 我用Google搜索了很多但是找不到实现@hide 。 只使用没有库的@hide并没有隐藏这个类。 所以,请给我适当的指导。 任何要使用的库? 任何出路来解决这个问题?

@NonNull和@Nullable的正确用法是什么?

我对这些注释的正确使用感到困惑。 android.support.annotation.NonNull; android.support.annotation.Nullable; @NonNull文档中的信息说: 表示参数,字段或方法返回值永远不能为空。 在参数的情况下,这意味着什么,什么都没有阻止你传递null ? 例如,假设我有一个MyObject类,并且一个实例可能有也可能没有标题。 public final class MyObject { private String title = null; public void setTitle(String title) { if (title == null) throw new NullPointerException(); this.title = title; } public void clearTitle() { title = null; } } 这里我使用null来表示缺少标题,但这是一个实现细节,所以我不想要一个方法来设置和清除标题。 如果我将字段title标记为@Nullable ,android studio告诉我setTitle的参数也应该标记为@Nullable (但这与我想要的相反)。 如果我将setTitle方法的参数标记为@NonNull我会收到警告条件title == null始终为false 。 在这种情况下,这些注释的正确用法是什么? 如果@NonNull意味着参数永远不能为null ,那么使用它来表示不应该为null是错误的吗? […]

如何使用@Contract注释

我正在尝试学习如何使用库和注释快速开发启动应用程序。 我已经体验过@NonNull,@ Nullable。 在阅读javadocs时,我注意到有一个@Contract注释使用了@Contract(“null-> fail”),如果null传递则会导致编译错误。 这是非常酷的function,但我不能使用它,因为support.annotations包中没有注释类。 我怎样才能获得此function? 或者要导入哪个库? 谢谢。

在处理器生成的类中使用库

我正在开发一个库来使用注释和处理器生成类。 生成的类应该使用谷歌的Gson库。 我的问题是: 我应该在哪里添加Gson依赖项? 我目前正在将它添加到处理器build.gradle中,但是当生成类时,找不到Gson并且Android Studio建议将其添加到app模块。 build.gradle 处理器 : implementation project(‘:lib-annotation’) implementation ‘com.squareup:javapoet:1.9.0’ implementation ‘com.google.code.gson:gson:2.8.1’ implementation ‘com.google.auto.service:auto-service:1.0-rc3’ app的build.gradle : implementation project(‘:lib-annotation’) annotationProcessor project(‘:lib-processor’) 任何帮助将不胜感激,谢谢! PS该项目旨在成为一个图书馆。 我希望用户只将我的库包含在他们的gradle文件中,而不是“子依赖”。

“添加方法合同……”Android Studio的主要用途是什么?

我得到以下选项,如“将方法合同添加到’setDisplayHomeAsUpEnabled’ ” ,我知道检查是因为NPE可以通过getSupportActionBar()抛出,但我想知道方法合同的实际使用 如果我在该选择上按Enter键,我将得到: 任何分享? 任何帮助? 它会赞赏:)