获取变量使用反射另一个java文件(Getting variables from another .

2019-10-17 17:52发布

我已经成功地得到反映通过获取和格式化在类的toString()方法是在变量工作。

public class ReadFile {

public int test1 =0;
public String test2 = "hello";
Boolean test3 = false;
int test4 = 1;

public static void main(String[] args) throws IOException{

    ReadFile test = new ReadFile();

    System.out.println(test);

}


public String toString(){

    //Make a string builder so we can build up a string
    StringBuilder result = new StringBuilder();
    //Declare a new line constant
    final String NEW_LINE = System.getProperty("line.separator");

    //Gets the name of THIS Object
    result.append(this.getClass().getName() );
    result.append(" Class {" );
    result.append(NEW_LINE);

    //Determine fields declared in this class only (no fields of superclass)
    Field[] fields = this.getClass().getDeclaredFields();

    //Print field names paired with their values
    for ( Field field : fields  ) {
        result.append("  ");
        try {
            result.append(field.getType() + " "); 
            result.append( field.getName() );
            result.append(": ");
            //requires access to private field:
            result.append( field.get(this) );
        } catch ( IllegalAccessException ex ) {
            System.out.println(ex);
        }
        result.append(NEW_LINE);
    }
    result.append("}");

    return result.toString();
}
}

但是我不知道它是否有可能到指定目录中的特定文件中toString()的工作吗?

我试图得到一个文件,并在插上System.out.println()但我看到它的方式是,你需要做一个类的实例,并为其指定实例为它工作。 所以我不知道如何可以通过程序来完成。

我一直在尝试这样的事情:

    Path path = FileSystems.getDefault().getPath("D:\\Directory\\Foo\\Bar\\Test.java", args);

    File file = path.toFile();

    System.out.println(file);

但是我没有得到很远呢,我主要是已经看到,如果我可以将文件转换成可用的东西,但我不知道我需要做什么!

任何意见将是巨大的。

Answer 1:

我认为你需要看看ClassLoader的API -你需要获得一个新的URLClassLoader ,并要求到您的.java文件加载到JVM。 然后,您可以反映它。



Answer 2:

您可以尝试从文件读取包信息(d:\目录\富\酒吧\ Test.java),比试图通过它的名字来加载它的类:

Class.forName(nameOfTheClass)

Java API的类



文章来源: Getting variables from another .java file using reflection