如何在Java中将接口名称和变量名称作为字符串传递

时间:2018-09-18 05:09:04

标签: java

我有一个接口和一个String变量,如下所示:

public interface LoginPage {

    public static String UserName = "//input[@name='usertxt']";
}

现在我从Excel文件中获取接口名称和变量名称为String,如下所示:

String referenceName="LoginPage.UserName";

当我说System.out.println(referenceName);时,它应该打印//input[@name='usertxt']而不是打印LoginPage.UserName 请帮助我。

1 个答案:

答案 0 :(得分:4)

您可以使用反射API:

import java.lang.reflect.Field;

interface LoginPage {

    public static String UserName = "//input[@name='usertxt']";
}


public class Main {
    public static void main(String[] args) throws SecurityException, NoSuchFieldException, ClassNotFoundException,
        IllegalArgumentException, IllegalAccessException {
        String referenceName="LoginPage.UserName";
        String s[] = referenceName.split("\\.");
        final Field field = Class.forName(s[0]).getDeclaredField(s[1]);
        System.out.println(field.get(null));

    }
}

谢谢你,我今天学到了这个新东西:)

了解更多详情,http://blog.sevagas.com/?Modify-any-Java-class-field-using-reflection