草庐IT

annotation-processing

全部标签

Java 和@annotations

在使用Java注释时,有些事情我不确定是否理解。这是一个例子:我创建了一个@Log注释并用它添加了一些功能(每个用@Log注释的方法在执行该方法之前都会运行一些日志)。现在我正在创建一个新的@SuperLog注释,如下所示:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)@Logpublic@interfaceSuperLog{............}这个@SuperLog必须提供@Log所做的所有内容,以及一些特定于@SuperLog的额外内容。不幸的是,当我执行一些用@SuperLog注释的方法时,特定于

java - 检查注释处理器中是否缺少父类(super class)

在注释处理器中获取TypeElement时,您可以使用方法getSuperClass()。AccordingtotheJavaDoc,一个没有显式扩展任何东西的类型(换句话说,Object是父类(superclass))或者是一个接口(interface)将返回一个NoType和NONE作为TypeKind。不管整个模型/镜像API似乎都会在一瞬间让您感到困惑的事实,我如何可靠地检查这一点?以下是一些代码摘录://CastissafesinceTypeKindischeckedbeforethisfinalTypeElementel=(TypeElement)annotatedElem

java - 冒号的含义(:) inside @Path annotation

我是Restful服务的新手。我正在查看代码并找到了这一行@GET@Path("{image:image/.*}")谁能解释一下上述语法的含义和用法? 最佳答案 @Path符号支持普通字符串匹配路径或正则表达式匹配模式。在你的情况下@Path("{image:image/.*}")似乎只是匹配的模式Pathparam{image}withanypatternlikeimage/.*,whichbasicallytranslatestoimage/anything,anythingheredoesnotrefertotheword'a

java Process.waitfor 是一个阻塞调用

我希望能够从JVM内部启动外部进程并完成它。我可以使用ProcessBuilder创建一个流程,然后执行Process.waitFor()以等待其完成。然而,这是一个阻塞调用,只会浪费线程资源。通过事件处理程序和响应式编程来完成此操作会更有意义。人们会认为JVM可以向操作系统注册某种监听器来监听进程完成事件,并将其转发回程序。是否存在这样的机制/API?有没有实现此目的的替代方案或库? 最佳答案 使用NuProcess如果您只需要支持Windows、MacOSX和Linux,请使用该库。它使用回调模型提供对外部进程的非阻塞访问——包

java - 在 Annotation Processor for java 中发现方法调用的类

我正在为我们的构建系统编写一些工具,以对属于包含某些注释的类的方法执行一些严格的调用约定。我正在使用编译器树API...我想知道的是,在遍历“树”时,您如何判断MethodInvocation的类/接口(interface)的类型。我将TreePathScanner子类化为:@OverridepublicObjectvisitMethodInvocation(MethodInvocationTreenode,Treestrees){}我希望有一种方法可以告诉您尝试调用方法的类(或接口(interface))的类型。我会以错误的方式解决这个问题吗?感谢您的任何想法...

java - 优雅地处理 TypeMirror 和 Class

我刚刚在这里开始使用javaxAnnotationProcessing,遇到了一个丑陋的案例。我将在描述我的学习过程的一系列伪代码行中对其进行说明:MyAnnotationann=elementIfound.getAnnotation(MyAnnotation.class);//Classclazz=ann.getCustomClass();//CanthrowMirroredTypeException!//Classeswithinthecompilationunitdon'texistinthisformatcompiletime!//Searchwebandfindthisalt

Java :Kill process runned by Runtime. getRuntime().exec()

我需要写一段代码,那使用Runtime.getRuntime().exec("java-jarMyServerRunner-portMYPORT");运行unix进程通过从java代码执行命令找到进程的PIDlsof-t-i:MYPORT并通过pidkill-9PID杀死他(也可以通过从java代码执行命令)然后执行其他命令但是如果我通过Runtime.getRuntime().exec()执行此命令,我的程序将以退出代码137退出-这意味着当我运行Runtime.getRuntime().exec("kill-9PID")我终止了我的java程序的进程,但不是我从代码运行的程序。我怎

java - 是否可以将 Process stdout InputStream 读取到 NIO ByteBuffer 中?

是否可以使用NIO来处理来自进程的标准输出?我让它与java.io一起工作,但这是一种练习,可以更多地了解NIO并探索性能改进的可能性。基本上,我想尽可能快地将大量文本从stdout流式传输到缓冲区而不阻塞,然后稍后处理该缓冲区的内容。问题是,我似乎无法找出合适的巫术来让它与NIO一起工作。这就是我现在所在的位置:ProcessBuilderpb=newProcessBuilder(...);Processp=pb.start();stdout=newStreamConsumer(p.getInputStream());newThread(stdout).start();//other

java.lang.InternalError : CallerSensitive annotation expected at frame 1 错误

在静态方法中(用@CallerSensitive注释)我尝试获取调用类的名称:@CallerSensitivepublicstaticvoidsomeMethod(){Stringname=sun.reflect.Reflection.getCallerClass().getName();...}我得到错误:java.lang.InternalError:CallerSensitiveannotationexpectedatframe1这里有什么问题吗?引用资料http://www.infoq.com/news/2013/07/Oracle-Removes-getCallerClass

java - 无法覆盖 SwingWorker 中的 process() 方法

我有一个SwingWorker类如下:classRemotePlayersWorkerextendsSwingWorker{PlayerCanvasparent;RemoteHandlerremote;String[][]players;intmaximumConnections;publicRemotePlayersWorker(PlayerCanvasparentCanvas,RemoteHandlerremoteHandle){this.parent=parentCanvas;this.remote=remoteHandle;}@OverrideprotectedString[]