Tag: 注释

“转换”视图类来注释android

我正在尝试为用户体验开发人员创建一个非常简单的服务,允许他们使用一些用于用户体验测试的功能来增强他们的代码 现在,我有一个从所有组件继承View()的class ,最终的开发人员必须从这个类继承来使用每个组件。 我想通过在class之上使用注释来使其更轻: @MyAnnotation(<eventual parameters here) class MyClass() { //normal view class here } 是否有人有关于如何实现这样的东西的线索,或者是一些例子?

JvmOverloads类的主要构造函数的注释

为什么它被禁止自动生成许多构造函数的Java可见的从类的主要构造函数与默认参数像这样? @JvmOverloads class Video(private val id: Long, val ownerId: Long, var title: String? = null, var imgLink: String? = null, var videoLink: String? = null, var description: String? = null, var created: Date? = null, var accessKey: String? = null, var duration: Long? = null, var views: Long? = null, var comments: Long? = null) […]

嵌入式Jetty没有找到带注释的Servlet

简而言之:我有一个项目提供了一个包含带注释但没有web.xml的servlet的war artifact。 如果我尝试在码头使用战争,我总是只得到战争内容的目录列表,而不是servlet执行。 任何想法? 长话短说:我的servlets看起来像这样 package swa; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet( asyncSupported = false, urlPatterns={"/*"}) public class ServletX extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); […]

如何更有效地使用@Nullable和@Nonnull注释

我可以看到@Nullable和@Nonnull注释有助于防止NullPointerException但是它们不会传播很远。 这些注释的有效性在一层间接后完全消失,所以如果只添加一些注释,它们就不会传播很远。 由于这些注释没有被很好地执行,所以存在假设用@Nonnull标记的值不为空并且因此不执行空检查的危险。 下面的代码会使用@Nonnull标记的参数为null而不会引发任何投诉。 它在运行时抛出一个NullPointerException异常。 public class Clazz { public static void main(String[] args){ Clazz clazz = new Clazz(); // this line raises a complaint with the IDE (IntelliJ 11) clazz.directPathToA(null); // this line does not clazz.indirectPathToA(null); } public void indirectPathToA(Integer y){ directPathToA(y); } public void directPathToA(@Nonnull Integer x){ x.toString(); // do stuff to x […]

未解决的参考:KOTLIN需要2个版本清理后,拿起代码时使用kapt

在我们的Android应用程序中,我们使用DBFlow访问SQLite数据库。 我们通过Kotlin引用由DBFlow生成的类。 我们已经意识到这样一个事实,即我们拥有Java中的模型类和数据库类,因为在Kotlin中编写这些类时代码生成将不起作用 。 不过,在每个项目清理完毕后,我们仍然需要两次构建代码。 在设备上执行第一个构建会导致看似随机的Kotlin类的ClassNotFoundExceptions (即使它们不访问由DBFlow或由我们定义的任何模型类生成的代码)。 编译时已经报告过,当启用Proguard时,这当然不能构建。 第二个构建总是成功的。 有趣的是,代码生成已经在第一次运行 – 类在那里,也被IDE拿起。 但编译器以某种方式无法找到它们,使我认为代码生成在构建过程中发生得太迟。 另一方面,如上所述,还有一些没有发现的代码生成和/或注释处理不需要做任何事情的类。 那么是否有比第二个版本更好的解决方案? 作为参考,我们的应用程序的build.gradle的相关部分看起来像这样 – 就像DBFlow文档建议: def dbflow_version = "3.0.0-beta4" dependencies { kapt "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}" } kapt { generateStubs = true } 编辑:我发现,我也必须重建两次,我对代码的每一个变化。 它在第一个版本中编译正确,如果我以前没有清除,但是这些更改根本没有被拾取。

在“注释处理器”中为生成的类指定路径

我正在创建一个Android应用程序。 我使用AbstractProcessor从Annotated类和Velocity模板生成我自己的类。 这是生成源文件的方法。 private void createSourceFile(String className, String packageName, VelocityContext context, Template template) throws IOException { final JavaFileObject javaFileObject = processingEnv.getFiler().createSourceFile(packageName + "." + className); processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "creating file: " + javaFileObject.toUri()); final Writer writer = javaFileObject.openWriter(); if (DEBUGGING) { processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "applying velocity template: " + template.getName()); } template.merge(context, writer); writer.close(); } 我的问题是 我可以为生成的类指定一个目录吗? 现在他们在build / […]

从属性中注释getter

在kotlin中,我们可以定义 var text: String 这将有一个getter和一个setter。 通过改变val来移除setter很容易,但是如果我们有一个只有setter和getter的属性呢? 有什么办法可以创建一个注释,我们可以将其应用于将废弃吸气剂,使其他人不能使用它的text ? 最终目标是能够使用属性语法而不是调用setText 目前的解决方法我知道这实现了类似的结果: var text: String @Deprecated(level = DeprecationLevel.ERROR, message = "Non readable property") get() = nonReadable() set() … 我想知道是否有可能定义类似的东西 @SetterOnly var text: String set() …

是否可以将单个注释应用于Kotlin中的多个使用站点目标?

根据文档: https : //kotlinlang.org/docs/reference/annotations.html 您可以将多个批注应用于单个网站使用目标,但有没有办法将相同的批注应用于多个网站使用目标? 我的用例是用SimpleXML注解装饰类。 要使用不可变data class ,必须注释字段和构造函数参数: data class Data( @field:Element(name = "ID") @param:Element(name = "ID") val id: Int, @param:Element(name = "TEXT") @field:Element(name = "TEXT") val text: String) 对于包含许多字段的数据类,您可以很容易地将实际代码的注释数量增加3倍,并且消除重复是很好的做法。 当你必须使用一个像ElementUnion这样复杂的注释时,这个特别烦人,它可以是多行的。

Android中的活动的自定义注释

我正在开发一个Android库,其中包含一个自定义Activity 。 现在的想法是让开发人员从MyActivity()而不是AppCompatActivity()继承。 由于它不能为开发人员提供良好的用户体验,因此我想创建一个自定义的注释,它可以让我在Activity “注入”我的代码。 现在(科特林代码): class SomeClass : CustomClassFromLibrary() { //Some code here } 目标(科特林代码): @MyAnnotation class SomeClass : AppCompatActivity() { //Some code here } 由于我没有找到关于如何实现这种事情的任何文档,有人至少有一个如何实现它的路径?

Java / Kotlin注释处理器:获取注释字段/属性的类型

例如我有一个类: class Foo { @AnnotatedProp var foo: Boolean? = null } 我如何获得我的自定义注释处理器中的foo属性的类型? 在伪我希望这样的事情annotatedElement.getStringifiedReturnTypeSomehow() //returns "Boolean"