Java 从变量获取值后调用属性的getter

Java 从变量获取值后调用属性的getter,java,Java,我试图对对象调用getter方法,但调用哪个getter取决于变量中的值 public void met1(String var) { MyClass m = new MyClass(); if(var.equals("A")) m.getA(); if(var.equals("B")) m.getB(); if(var.equals("C")) m.getC(); } 这是一种方式。另一种可能是使用开关,但我不

我试图对对象调用getter方法,但调用哪个getter取决于变量中的值

public void met1(String var) {
    MyClass m = new MyClass();

    if(var.equals("A"))
        m.getA();
    if(var.equals("B"))
        m.getB();
    if(var.equals("C"))
        m.getC();
}

这是一种方式。另一种可能是使用
开关
,但我不想硬编码值,因为它们可能会改变。有更好的方法吗?

String是一个类而不是一个基本类型,您不能使用
==
比较像var这样的String类的实例,这将不起作用

您需要使用方法
equals
比如:
如果(var.equals(“A”)),那么…

除此之外,这种方式很好

另一种方法是使用不带if语句的反射:

    Class<?> c = Class.forName("MyClass"); 
    Object my_object = c.newInstance(); 
    Method setNameMethod = my_object.getClass().getMethod("get"+var,String.class);
    setNameMethod.invoke(my_object, var); 
Class c=Class.forName(“MyClass”);
对象my_Object=c.newInstance();
方法setNameMethod=my_object.getClass().getMethod(“get”+var,String.class);
调用(my_对象,var);

请更好地解释您的问题,并在示例中添加一些其他内容。@scaranderu else将引发异常。这不是我问题的一部分。我只需要检查是否有更好的方法来实现这一点,而不是检查每个值。谢谢,我更新了问题。但是我觉得把值硬编码为“A”、“B”、“C”等并不舒服。你说的不舒服硬编码是什么意思?如果要比较字符串,则必须将其存储在某个位置;可能位于某些常量变量/枚举上。