【发布时间】:2014-10-07 05:02:27
【问题描述】:
为什么在用现有变量输入新变量时是输入全部或全部输入?
例如,假设我有一个变量data,其类型为List<Map<String, ArrayList<String>>>,我想将其值传递给tempData。为什么在决定tempData的类型时我只限于List或List<Map<String, ArrayList<String>>>?
如果我只想与data 的某个“级别”交互,比如Map 级别,我该如何跳到那里?比如为什么我不能List<Map> tempData = data?
我已经搜索了我的教科书和这个网站,但是我找不到任何地方可以解释为什么会这样。如果允许我们“部分输入”,是否会出现问题?
我知道我可以直接输入 tempData 开始,但我很好奇为什么 Java 有一个全有或全无的方法。
【问题讨论】:
-
因为 Java 不能那样工作。另外,这些是raw types。不要那样做。
-
List<Map<String, ArrayList<String>>>应该是List<Map<String, List<String>>>。针对接口而不是实现的代码。 -
@ElliottFrisch 实际上,Java 确实是这样工作的,它只需要特定的语法(见下文)。 :)
-
@DavidConrad 感谢您指出这一点,我没有想到这一点,我从来没有使用过 ArrayList 特定的方法,并且已经清理了它。与您的评论相关的帖子给其他感兴趣的人:Why are variables declared with their interface name in java
标签: java strong-typing weak-typing