1

我正在尝试将参数保存为属性,参数是 : testSpeed ( = "20" ),并且我有一个方法:

saveProperty(String Parameter)

这会将 Parameter 的值保存到文件中,如下所示:

saveProperty(testSpeed);

我的属性文件如下所示:

testSpeed : 20
testHeight : 300

我的问题是:在Java中是否可以获取参数的名称,在这种情况下传递给的参数saveProperty()testSpeed,它的名称是"testSpeed",如何从内部获取这个字符串saveProperty(),所以我不必执行以下操作保存它:

saveProperty(String Name,String Value);

并这样称呼它:

saveProperty("testSpeed",testSpeed)

另外,当我需要从属性文件中取出它时,我可以调用:

getProperty(testSpeed)

我知道如何使用属性文件,我只是以它为例,可能在提到属性文件时引起了一些混乱。

问题的本质是:如何获取传递给方法的参数名称。

void someMethod(String Parameter_XYZ)
{
  // In here if I call someMethod(testSpeed), how to get the string "testSpeed", 
  // not it's value, but it's name, 
  // exactly spelled as "testSpeed" ?
}

这在 Java 中可行吗?

4

3 回答 3

1

使用属性

public class Util
{
    private static final Properties prop = new Properties();

    static
    {
        try
        {
            prop.load(new FileReader(new File("prop.txt")));
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }

    public static void setProperty(String key, String value)
    {
        prop.setProperty(key, value);
        persistCurrentProperites();
    }

    public static String getProperty(String key)
    {
        return prop.getProperty(key);
    }

    private static void persistCurrentProperites()
    {
        try
        {
            prop.store(new FileWriter(new File("prop.txt")), null);
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }
}
于 2013-08-23T18:59:02.640 回答
1

首先正确的属性文件格式是这样的:

testSpeed=20
testHeight=300

现在要从中提取任何属性,您需要传递键名,您已经在saveProperty(String name, String value)方法中这样做了。但是,如果我正确理解了您的问题,那么您希望避免传递属性名称。你可以有一些像这样的自定义方法:

void saveTestSpeed(String value) {
    saveProperty("testSpeed", value);
}

Strig getTestSpeed() {
    getProperty("testSpeed");
}

编辑:根据您编辑的问题。

不,这在 Java 中是不可能的。

请记住,Java 是严格按值传递的,这使得在被调用者端无法确定实际变量名的名称。在saveProperty方法内部,我们只能获取参数的值,因为在 Java 中,对象引用是按值传递的,而不是按名称传递的。

这也是不切实际的,因为没有什么可以阻止方法被调用,例如:

savePropery( "20" );

在这种情况下,财产的名称应该是什么?

于 2013-08-23T19:01:51.883 回答
0

我建议维护键值对以实现更通用的解决方案。您可以使用Properties

void saveProperty(String key, String value) {

    properties.setProperty(key, value);
}

用于getProperty检索

properties.getProperty(key)
于 2013-08-23T18:52:06.750 回答