我有一个自定义注释,我想在运行时使用它来显示对象属性。我希望它们以源代码顺序出现,但反射并不能保证Class.getMethods()
.
有没有办法通过反射或通过注释处理来按源顺序获取方法(如果涉及多个继承级别,至少每个类)?
举个例子,假设我有一个界面 Property
package test;
public @interface Property {
public String name();
}
Run Code Online (Sandbox Code Playgroud)
和一个使用该注释的类
package test;
public class MyObject {
@Property(name = "First")
public void getFirst() {}
@Property(name = "Another")
public void getAnother() {}
}
Run Code Online (Sandbox Code Playgroud)
我想在属性“另一个”之前可靠地获得“第一个”属性。
我知道我可以在我的注释中添加一个排序属性并对其进行排序,但是如果需要的话,我有很多需要更新的类,所以我正在寻找一种通用方法来实现这一点,而无需修改单个注释。
我正在写一个语法来处理标量和向量表达式.下面的语法被简化以显示我所遇到的问题,其中标量表达式可以从向量导出,并且向量可以从标量导出.例如,矢量可以是文字[1, 2, 3]
或标量和矢量2 * [1, 2, 3]
(相当于[2, 4, 6]
)的乘积.标量可以是文字2
或向量的索引[1, 2, 3][1]
(相当于2
).
grammar LeftRecursion;
Integer
: [0-9]+
;
WhiteSpace
: [ \t\r\n]+ -> skip
;
input
: expression EOF;
expression
: scalar
| vector
;
scalar
: Integer
| vector '[' Integer ']'
;
vector
: '[' Integer ',' Integer ',' Integer ']'
| scalar '*' vector
;
Run Code Online (Sandbox Code Playgroud)
ANTLR4给了我错误:The following sets of rules are mutually left-recursive [scalar, vector] …
我正在使用 Java 11 和 gradle 为不使用模块的项目生成 javadoc,使用以下配置。
文档生成正确,但导航到搜索结果会生成未找到的文件而不是预期的页面。URL 中包和类名之前有一个额外的“undefined/”(例如“.../doc/undefined/package/Class.html”)。
javadoc与Maven有一个类似的问题,但我看不到如何--no-module-directories
在gradle中添加该选项。
task allJavadoc (type: Javadoc, description: 'Generate javadoc from all projects', group: 'Documentation') {
destinationDir = file("$projectDir/doc")
title = "Title"
maxMemory = "2048m"
failOnError true
options.author false
options.version true
options.use true
options.links "https://docs.oracle.com/en/java/javase/11/docs/api/"
options.breakIterator true
subprojects.each { proj ->
proj.tasks.withType(Javadoc).each { javadocTask ->
classpath += javadocTask.classpath
excludes += javadocTask.excludes
includes += "**/*.java"
}
}
}
Run Code Online (Sandbox Code Playgroud)