Java - 为什么我不能部分键入变量?

Fre*_*Dan 4 java weak-typing strong-typing

为什么在使用现有变量键入新变量时输入全部或全部?

例如,假设我有一个data类型为的变量List<Map<String, ArrayList<String>>>,我想将其值传递给tempData.为什么在决定tempData我的类型时我是否仅限于ListList<Map<String, ArrayList<String>>>

如果我只想与某个"级别"进行交互data,比如Map级别,我该如何跳到那里?比如为什么我不能List<Map> tempData = data

我搜索过我的教科书和这个网站,但我无法找到解释原因的地方.如果我们被允许"部分打字",是否会出现问题?

我知道我可以强烈打字tempData,但我很好奇为什么Java有一个全有或全无的方法.

Mar*_* A. 10

实际上,你可以:诀窍是在你的声明中使用?? extends.以下工作并逐步更具体:

List<Map<String, ArrayList<String>>> data = null; // Replace null with content

Object temp1 = data;
List<?> temp2 = data;
List<? extends Map<?, ?>> temp3 = data;
List<? extends Map<String, ?>> temp4 = data;
List<? extends Map<String, ? extends ArrayList<?>>> temp5 = data;
List<Map<String, ArrayList<String>>> temp6 = data;
Run Code Online (Sandbox Code Playgroud)