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