You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Java中如何通过变量名的字符串形式获取变量值?

能否通过字符串形式的变量名获取Java变量的值?

首先得纠正个小问题:你写的let hello = 10;在Java里是非法语法,Java没有let关键字,正确的变量声明应该是指定类型(比如int hello = 10;),或者用Java 10+支持的var自动推断类型(var hello = 10;)。

回到你的问题:Java作为静态类型语言,没有内置的直接通过字符串变量名获取值的方法,但可以通过两种方式间接实现:

1. 反射(针对类的成员变量)

如果变量是类的成员字段,可以用Java的反射API来读取:

public class Test {
    public int hello = 10;

    public static void main(String[] args) throws Exception {
        Test instance = new Test();
        // 获取指定名称的字段
        java.lang.reflect.Field field = Test.class.getField("hello");
        int value = field.getInt(instance);
        System.out.println(value); // 输出10
    }
}

要是变量是私有的,得先调用field.setAccessible(true)来绕过访问权限限制。

2. 用Map模拟动态映射(针对局部变量)

如果是方法内部的局部变量,反射也拿不到,因为局部变量不属于类的字段。这种情况可以自己用Map存变量名和对应值的映射,手动实现动态获取:

public class Test {
    public static void main(String[] args) {
        int hello = 10;
        // 构建变量名-值的映射表
        java.util.Map<String, Integer> varMap = new java.util.HashMap<>();
        varMap.put("hello", hello);
        // 通过字符串键取值
        int value = varMap.get("hello");
        System.out.println(value); // 输出10
    }
}

额外提醒

反射虽然能实现需求,但会拖慢代码性能,还会降低可读性,非必要别用;局部变量场景下,用Map是更简单直接的方案。

内容的提问来源于stack exchange,提问作者user1488934

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:05:15