通过名称获取变量的值:Java

Get value of variable by it's name : Java

我想通过变量名获取变量值,我该如何实现?

private String firstName = "some xpath";
private String secondName = "some xpath";

public void findElement(String fName , String sName){ // fName = "firstName" , sName = "secondName"
driver.findElementByXPath(/*here goes reflection of fName*/);
driver.findElementByXPath(/*here goes reflection of sName*/);
}

谢谢

使用反射,您可以:

public void print(String fName , String sName) throws Exception {
    Field fNameField = this.getClass().getDeclaredField(fName);
    Field sNameField = this.getClass().getDeclaredField(sName);
    System.out.println(fNameField.get(this));
    System.out.println(sNameField.get(this));
}

这段代码应该可以做到:

private String firstName = "myFName";

private String secondName = "mySName";

public void print(String fName , String sName){

System.out.println(fName);
System.out.println(sName);

}

如果您希望它们在同一行,您也可以使用 System.out.print。

假设您的私有变量位于不同的 class 中,例如:

public class PrivateObject {
    private String firstName = "myFName";    
    private String secondName = "mySName";
}

您可以像这样通过反射访问它们:

public void print(String fName , String sName){ // fName = "firstName" , sName = "secondName"
    PrivateObject p = new PrivateObject();
    try {
        Field fNameField = PrivateObject.class.getDeclaredField(fName);
        Field sNameField = PrivateObject.class.getDeclaredField(sName);
        fNameField.setAccessible(true);
        sNameField.setAccessible(true);
        String fNamefieldValue = (String) fNameField.get(p);
        String sNamefieldValue = (String) sNameField.get(p);
        System.out.println("fName = " + fNamefieldValue);
        System.out.println("sName = " + sNamefieldValue);
    } catch (Exception e) {
        e.printStackTrace();
    } 
}