Java获取变量名作为字符串

伤口
final static int 
    DRAGON = 5,
    SNAKE = 6;

String this_item = "DRAGON";
int item_value = super_func(this_item);//must be 5

是否可以实现this super_func,如上所示?

还是我要求太多?

编辑:

我不允许使用枚举。我可以:

a)使用地图(如某人指出的那样,或2个数组列表)或
b)以某种方式进行此操作(但似乎不可能)。

马可13

尽管在技术上可以使用反射来完成此操作,但我强烈建议您重新考虑您的结构,并考虑其他答案中已提及的替代方法之一。

最简单的可能是使用地图

import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;

public class VariableNameTest
{
    private static final Map<String,Integer> map;
    static
    {
        Map<String, Integer> m = new LinkedHashMap<String, Integer>();        
        m.put("DRAGON",5);
        m.put("SNAKE",6);
        map = Collections.unmodifiableMap(m);
    }

    public static void main(String[] args)
    {
        System.out.println(getValue("DRAGON"));
        System.out.println(getValue("SNAKE"));
        System.out.println(getValue("Boo!"));
    }

    public static int getValue(String name)
    {
        Integer i = map.get(name);
        if (i == null)
        {
            // Do some error handling here!
        }
        return i;
    }
}

但是,如果您打算使用其他功能扩展它,则可能应该引入一个类,例如在https://stackoverflow.com/a/23846279/3182664中建议的类

仅出于完整性考虑:不建议使用反射解决方案

import java.lang.reflect.Field;

public class VariableNameTest
{
    static final int DRAGON = 5;
    static final int SNAKE = 6;

    public static void main(String[] args)
    {
        System.out.println(getValue("DRAGON"));
        System.out.println(getValue("SNAKE"));
        System.out.println(getValue("Boo!"));
    }

    private static int getValue(String name)
    {
        try
        {
            Class<?> c = VariableNameTest.class;
            Field f = c.getDeclaredField(name);
            return f.getInt(null);
        }
        catch (NoSuchFieldException e)
        {
            // Many things
            e.printStackTrace();
        }
        catch (SecurityException e)
        {
            // may cause
            e.printStackTrace();
        }
        catch (IllegalArgumentException e)
        {
            // this to 
            e.printStackTrace();
        }
        catch (IllegalAccessException e)
        {
            // fail horribly 
            e.printStackTrace();
        }
        return 0;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用变量名作为字符串访问变量

来自分类Dev

创建包含变量名作为字符串加值的txt文件

来自分类Dev

获取字符串作为变量名

来自分类Dev

如何获取变量名称作为字符串?

来自分类Dev

获取PHP变量名称作为许多变量的字符串

来自分类Dev

如何获取类名作为字符串?

来自分类Dev

从元素获取单个类名作为字符串

来自分类Dev

将字符串作为变量名QTP传递

来自分类Dev

kdb +:使用字符串作为变量名

来自分类Dev

使用字符串作为变量名

来自分类Dev

kdb +:使用字符串作为变量名

来自分类Dev

使用字符串作为变量名

来自分类Dev

java:如何使用字符串值作为类名和变量名

来自分类Dev

从ArrayList的字符串中获取变量名

来自分类Dev

获取字符串中的变量名

来自分类Dev

在 Django 中获取查询字符串变量名

来自分类Dev

实体框架-获取表的列名作为字符串数组

来自分类Dev

如何从 C# 中的 DbContext 获取任何表名作为字符串的表的 DbSet 对象

来自分类Dev

如何使用变量名作为参数

来自分类Dev

使用变量名作为列名

来自分类Dev

Matlab:以变量名作为索引的结构

来自分类Dev

使用变量名称作为字符串使用循环设置变量

来自分类Dev

返回一个全局变量,使用字符串作为变量名

来自分类Dev

OracleSQL获取变量的子字符串作为新变量

来自分类Dev

如何在Scala中获取变量的值,其中以字符串形式获取变量名称

来自分类Dev

如何使用整洁的评估与列名作为字符串?

来自分类Dev

从函数外部返回变量名称,作为python函数内部的字符串

来自分类Dev

如何将字符串作为变量名分配

来自分类Dev

如何在Python中使用字符串值作为变量名?

Related 相关文章

热门标签

归档