java - 使用反射从另一个 .java 文件获取变量

标签 java reflection

我已经通过在 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);

但是我并没有深入了解它,我主要是看看我是否可以将文件转换成任何可用的东西,但我不确定我需要做什么!

任何建议都会很棒。

最佳答案

我认为您需要查看 ClassLoader API - 您需要获得一个新的 URLClassLoader并要求它将您的 .java 文件加载到 JVM 中。然后你可以反射(reflection)它。

关于java - 使用反射从另一个 .java 文件获取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14904360/

相关文章:

java - 在 Spring 上下文中导入/过滤属性

java - 检查数组列表中的两个对象是否相等

java - Mybatis 的用途

具有已知事件签名的 C# 2.0 动态事件订阅

java - 如何使用 consumer 和 supplier 代替 java 8 中的 Reflection

java - 如何使用 Java8 流在下面的数组列表中找到第二高的薪水

java - 处理复制/重复调整大小问题

c# - .NET Core 的枚举反射

reflection - RPGle - 我希望我可以使用 RPGLe 做一些 'Reflection'

c# - 如何使用 MethodInfo.Invoke 设置属性值?