获取声明的方法,使它们出现在源代码中

Den*_*nis 10 java reflection

情况似乎是异常的,但我被要求构建序列化器,它将通过连接"get"方法的结果将对象解析为字符串.值应与源代码文件中声明的"get"等效值的顺序相同.

所以,例如,我们有

 Class testBean1{
  public String getValue1(){
   return "value1";
  }

  public String getValue2(){
   return "value2";
  }
 }
Run Code Online (Sandbox Code Playgroud)

结果应该是:

"value1 - value2"
Run Code Online (Sandbox Code Playgroud)

不是

"value2 - value1"
Run Code Online (Sandbox Code Playgroud)

Class根据文档,它不能用对象完成.但是我想知道我是否可以在"*.class"文件中找到这些信息还是丢失了?如果存在这样的数据,也许有人知道为此目的准备使用的工具?如果无法找到此类信息,请提出最专业的实现目标的方法.我想为应该序列化的类的getter添加某种自定义注释.

Boz*_*zho 1

我认为这些信息不会被保留。

例如,JAXB 可以@XmlType(propOrder="field1, field2")定义字段序列化为 xml 时的顺序。你可以实现类似的东西

  • 实际上,大多数情况下都会保留此信息(Eclipse 和 Sun javac 的默认设置是为了允许堆栈跟踪中的行)。如果是这样,则可以解析相关类文件的 LineNumberTables 并推断出方法的顺序。当然这不是很优雅。我认为你的建议更好。 (2认同)