如何使用另一个字符串打印另一个 class 的字符串变量来调用该变量? (JAVA)

How to print a String variable of another class using another String to call that variable? (JAVA)

我有这个规范,通过使用字符串调用该变量的静态实例来从特定 class 获取变量值。

假设我有一个名为 Sample 的 class 和另一个名为 testValue 的 class。 testValue 有一个 public static final String 测试,我必须打印它的值。当我尝试以这种方式打印时,输出为“测试值”。

public class Sample{
    public static void main(String args[]){
        System.out.println(testValue.test);
    }
}
class testValue{
    public static final String test = "Test Value";
}

现在我想通过其他字符串调用它来打印“测试值”。像这样:

public class Sample{
    public static void main(String args[]){
        String new = "test";
        System.out.println(testValue.new);
    }
}
class testValue{
    public static final String test = "Test Value";
}

但这会产生一个错误,因为 testValue class 中没有定义新的。有没有其他方法可以做这件事。它有点奇怪,但这是我想要调用测试变量的确切方式。 提前致谢。

您可以在 class testValue

中为所需的变量定义一个 getter
public class Sample{
    public static void main(String args[]){
        String new = testValue.getTest();
        System.out.println(new);
    }
}
class testValue{
    public static String test = "Test Value";

    public static String getTest(){
        return test;
    }
}

这将打印“测试值”。为了不破坏封装的最佳实践,您还应该定义一个 setter 并像这样将变量设为私有

public class Sample{
    public static void main(String args[]){
        String new = testValue.getTest();
        System.out.println(new);
    }
}
class testValue{
    private static String test = "Test Value";

    public static String getTest(){
        return test;
    }

    public static void setTest(String test){
        this.test = test;
    }
}

您可能想要这样做,因为它在 Java脚本中有效。在Java,你不能正常做这样的事情。但是你可以使用反射,这是不推荐的获取字段值的方式:

public class TestClass {
    public static final String field = "Test Value";
}
TestClass testClass = new TestClass();
Class<TestClass> personClass = TestClass.class;
Field field = personClass.getField("field");
String fieldValue = (String) field.get(testClass);
System.out.println(fieldValue);