我们的意图通过名为extras的键值对将数据从一个活动传递到另一个活动。
我们在使用public static final String mykey= "something";
intent.putExtra(mykey, myvalue);
)
我的问题是为什么我们需要在声明时为键指定一个值?这个价值有什么用? = "something"
public static final String mykey= "something";
”的用途是什么?
我发布了一个相关的问题,一个受人尊敬的人(由于他们有价值的答案而受到尊重)说,当宣布决赛时,必须分配一个值,以便知道常数是什么。听起来像常识。
但是如果我只是声明一个常量的public static final String a;编译器根本不会抱怨,这意味着只要在使用之前初始化一个值,就必须初始化带有值的最终变量。
相关答案表示赞赏。提前谢谢。
答案 0 :(得分:1)
我假设Intent
由Map
支持。
如果你有一个未初始化的变量作为键,这将意味着该值基本上丢失:没有办法检索它,因为没有与之关联的键(尽管我认为根本不可能插入)地图中的null
键。)
您不必将此键实际分配给变量:intent.putExtra("somekey", somevalue);
的效果一样好。
这只是确保您不会意外使用错误的密钥。
为了说明为什么使用最终变量是有益的:
public static void main(String[] args) {
Map<String, Integer> someMap = new HashMap<>();
String theValue = "X";
someMap.put(theValue, 5);
System.out.println("Variable: " + theValue);
System.out.println("Map: " + someMap.get(theValue));
theValue = "Y";
System.out.println("Variable: " + theValue);
System.out.println("Map: " + someMap.get(theValue));
System.out.println("ByValue: " + someMap.get("X"));
}
输出:
变量:X
地图:5变量:Y
地图:null
ByValue:5
如果theValue
是最终的,则无法重新分配,并且从基础Map
获取值时不会有任何问题。