繁体   English   中英

通过名称获取变量的值: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));
}

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

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();
    } 
}

此代码应执行以下操作:

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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM