使用反射在FileInputStream中访问路径变量

时间:2015-04-28 21:41:34

标签: java reflection io cascading

我遇到了一些使用反射进入"路径的代码。 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;
         }
    }

1 个答案:

答案 0 :(得分:0)

您应该使用FieldUtils.readDeclaredField(...)来访问私人字段。