Java 有没有办法将字符串与方法匹配?

Java 有没有办法将字符串与方法匹配?,java,string,Java,String,就我所研究的而言,无法将字符串与变量匹配。可能我用错了词,下面是我所说的匹配: 字符串grade=“a” 双a=4.0 而且无法将字符串等级的值与双a相关联 类似地,我想做的是将字符串的值和方法关联起来。也许我走错了方向,让我简单地解释一下我想要实现的目标: 在player类中,有一个String name()方法返回This.name。没有图形设计,用户与程序通信的唯一方式是打字。基本上,当person键入name时,我希望运行name方法。我是个新手,我能想到的唯一方法就是使用一堆if语句,

就我所研究的而言,无法将字符串与变量匹配。可能我用错了词,下面是我所说的匹配:
字符串grade=“a”
双a=4.0
而且无法将字符串等级的值与双a相关联

类似地,我想做的是将字符串的值和方法关联起来。也许我走错了方向,让我简单地解释一下我想要实现的目标:
在player类中,有一个String name()方法返回This.name。没有图形设计,用户与程序通信的唯一方式是打字。基本上,当person键入name时,我希望运行name方法。我是个新手,我能想到的唯一方法就是使用一堆if语句,并且为我添加的每个方法添加另一个if语句,这听起来不太合适

注意:我需要关联字符串的原因是因为我将使用javax.swing.JTextArea从用户那里获取输入,该用户返回字符串


提前感谢

Java不是像Python或Perl那样的动态解释语言


要将任意字符串与值关联,应使用
映射
,其中
值类
是要关联的值,例如
整数
浮点
大十进制
或您自己的值类。

是。它被称为
地图

下面是一些如何使用的示例代码:

Map<String, Double> map = new HashMap<>();

map.put("grade", 4.0);

double a = map.get("grade");
Map Map=newhashmap();
地图放置(“坡度”,4.0);
双a=地图获取(“等级”);

如果要存储各种值类型,请使用
Map
,但是在检索和使用从
get()

返回的值时,必须进行不安全的强制转换,因为等级通常是从a到F固定的,所以我会使用
枚举将每个等级映射到一个数值:

enum Grade {
    A(4.0), B(3.0) // etc...

    private double val;

    private Grade(double val) {
        this.val = val;
    }

    public double getVal() {
        return val;
    }
}

然后,当您需要A等级的数值时,使用
Grade.A.getVal()

您可以通过,但您提出的方法可能足以满足您的需要。从您的问题中可以看出,您似乎希望根据用户输入的名称调用方法。在这种情况下,您可能想了解反射API—您可以使用一个好的老交换机—因为没有人提到它,我会说:这可能不是最好的设置。如果将来要重命名函数,该怎么办?我会在字典/映射中存储一个名称,并将每个名称映射到一个函数。依赖反射来实现类似的功能似乎有点沉重,也没有必要。通过使用反射,您可以将字符串输入与方法名称匹配以调用该方法: