Как вызвать переменную класса, используя строку в Java - PullRequest
0 голосов
/ 14 июля 2020

У меня два класса, как показано ниже. В классе BBB я хочу передать имя переменной (в переменной strVarName), к которой я хочу получить доступ из класса AAA. Возможно ли это сделать?

public class AAA{
String strName = "SomeName";
String strAddress = "SomeAddress";
String strPhone = "1231234567";

public static void main(String[] args) {
    int intTest;
    
    intTest = 10/2;
    System.out.println (intTest)
}

}

public class BBB{
public static void main(String[] args) {
    String strVarName;
    strVarName = "strName";
    AAA objAAA = new AAA();
    System.out.println(objAAA.strVarName);//How to achive this line of code 
}
}

1 Ответ

0 голосов
/ 14 июля 2020

Вы можете попробовать использовать API отражения следующим образом:

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

class AAA{
    String strName = "SomeName";
    String strAddress = "SomeAddress";
    String strPhone = "1231234567";

     public String getStrName() {
         return strName;
     }
 }

 class BBB{
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        String strVarName;
        strVarName = "strName";
        AAA objAAA = new Test();
        Method method = objAAA.getClass().getMethod(createGetterName(strVarName));
        Object result = method.invoke(objAAA);
        System.out.println(result.toString());
    }

     private static String createGetterName(String name) {
         StringBuilder sb = new StringBuilder("get");
         sb.append(name.substring(0, 1).toUpperCase());
         sb.append(name.substring(1));
         return sb.toString();
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...