Axe*_*xel 28 java reflection junit
有没有办法按照声明的顺序使用反射获取类声明的字段(和方法)?根据该文件,方法和字段的顺序返回的getFields(),getDeclaredFields()等是不确定的.
使用Java反射中建议的注释可以指定像索引之类的东西:类字段和方法的顺序是否标准化?
有没有更好的选择,即不必手动指定索引?
现在在你问我需要什么之前:我们有一个方法,它将一个非常大的数据结构作为输入,并对其进行冗长的计算.为了创建单元测试,我们创建了一个方法,该方法接受输入对象和输出实例,并创建Java源代码(设置输入,调用计算方法,然后断言正确的结果)作为输出.当字段按声明顺序编写时,此代码更易读.
irr*_*ble 11
使用jdk 6,反射字段按其声明顺序设置.在早期的jdk中并非如此.显然有足够的人唠叨.
虽然javadoc不能保证,但我仍然认为这个顺序是合格的,我认为订单也将保留在未来的jdks中.
在您的应用程序中,就像在大多数应用程序中一样,对声明顺序的依赖主要是虚荣 - 如果订单搞砸了,您的应用程序不会失败,它只会变得有点丑陋.
不,不可能有反思.但是,你可以使用ProcessBuilder和javap命令解决它:
鉴于Test.java:
public abstract class Test {
public void method1() {
}
public void method2() {
}
public static void main(String[] args) {
}
public String method3() {
return "hello";
}
abstract void method4();
final int method5() {
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
该命令javap Test打印:
...
public Test();
public void method1();
public void method2();
public static void main(java.lang.String[]);
public java.lang.String method3();
abstract void method4();
final int method5();
...
Run Code Online (Sandbox Code Playgroud)
我有这个作为一个孤立的问题,看看
https://github.com/wmacevoy/kiss/blob/master/src/main/java/kiss/util/Reflect.java
和方法
public static Method[] getDeclaredMethodsInOrder(Class clazz)
它通过查看类的字节码来获取顺序。如果您只想使用库,则是
kiss.util.Reflect.getDeclaredMethodsInOrder(Test.class)
| 归档时间: |
|
| 查看次数: |
14986 次 |
| 最近记录: |