如何在Java中获取参数的字符串值?

时间:2013-08-23 18:49:02

标签: java parameters

我正在尝试将参数保存为属性,参数为: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中可行吗?

3 个答案:

答案 0 :(得分:1)

使用Properties

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();
        }
    }
}

答案 1 :(得分: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" );

在什么应该是属性的名称?

答案 2 :(得分:0)

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

void saveProperty(String key, String value) {

    properties.setProperty(key, value);
}

使用getProperty检索

properties.getProperty(key)