如何使用勺子获得一个类的属性在java中?



我有一个java文件,我想在throw关键字

之后获得异常类型的异常消息
// this is the code of D:\ProjectFile\AST\Test\000001\test.java
if (len < 0 || offset < 0 || len + offset > b.length) {
String str = "index out of bounds";
throw new IndexOutOfBoundsException(s);
}

例如,我想获取字符串"index out of bounds";在"D:ProjectFileASTTest00001 Test .java"中,因为他是IndexOutOfBoundsException的属性

所以,当我使用spoon时,我找不到足够的例子来教我


public static void main(String[] args) {
Launcher launcher = new Launcher();
launcher.addInputResource("D:\ProjectFile\AST\Test\000001\test.java");
launcher.buildModel();
CtModel model = launcher.getModel();

List<CtThrow> throwList = model.getElements(new TypeFilter<>(CtThrow.class));
for (int i = 0; i < throwList.size();i++) {
System.out.println(throwList.get(i).getThrownExpression());
}
}
使用上面的代码,我只能得到以下内容:
new java.lang.IndexOutOfBoundsException(s)

我无法得到s的值。

我希望能够检查此异常类型的构造函数并获得其属性值,我该如何做到这一点?

试一试:

IndexOutOfBoundsException e  = new java.lang.IndexOutOfBoundsException(s);
Field[] field = e.getClass().getDeclaredFields();
for(int i = 0 ; i<field.length ; i++)
java.lang.System.out.print(field[i].get(e));

但是它无法获得声明为private的值

你需要一些数据流分析。

在Spoon中,这不是在Spoon -core中,而是在子模块https://github.com/INRIA/spoon/tree/master/spoon-dataflow

相关内容

  • 没有找到相关文章

最新更新