我遇到了一些使用反射进入"路径的代码。 FileInputStream中的变量!!更奇怪的部分是commons.lang.reflect.FieldUtils.readField(is, "path", true)
抛出java.lang.IllegalArgumentException
。这太间歇了......可能是一些特定的情况导致了这一点,但我无法弄明白。关于什么可能导致反射失败的任何指示"参见"菲尔德?
代码隐藏在很多与级联工作流相关的mumbo jumbo中,但这里是相关部分 -
//This same method is invoked multiple times on same file. If it matters?
method(SourceCall<Object, InputStream> sc) {
InputStream is = sc.getInput();
if (is instanceof FileInputStream) {
FileInputStream fileInputStream = (FileInputStream)is;
//The line below throws IllegalArgumentException - sometimes
String fileName = (String)FieldUtils.readField(fileInputStream , "path", true);
return fileName;
}
}
答案 0 :(得分:0)
您应该使用FieldUtils.readDeclaredField(...)
来访问私人字段。