为什么Java变量声明中的类型不同?

时间:2015-04-23 08:12:34

标签: java

在Java变量声明中指定左侧和右侧的不同类型的目的是什么?

例如,像这样的代码是标准的:

List<String> l = new ArrayList<>();

为什么不:

ArrayList<String> l = new ArrayList<>();

Object l = new ArrayList<>(); // Silly example but shows two extremes

2 个答案:

答案 0 :(得分:1)

  • List<String> l = new ArrayList<>();允许您实例化 所有类型的ListArrayListLInkedList String。您可以使用List
  • 的所有方法
  • ArrayList<String> l = new ArrayList<>();您只能实例化ArrayList的{​​{1}}。
  • String您无法使用Object l = new ArrayList<>();方法。

答案 1 :(得分:1)

执行此操作时,您cannot use会列出add()remove()addAll()等操作。

Object l = new ArrayList<>();

在这里,你正在失去多态性的灵活性:

ArrayList<String> l = new ArrayList<>();// later you could not re-initialize
l = new LinkedList<String>();//compile time error