List l = new ArrayList<Number>();
l的静态类型是List吗?这里的“静态类型”是什么意思?我在sun的java教程中读到了它。
List l = new ArrayList<Number>();
l的静态类型是List吗?这里的“静态类型”是什么意思?我在sun的java教程中读到了它。
表达式的“静态类型”是编译器所认为的类型 - 编译时类型。这可能与变量的值的执行时类型不同。
例如,考虑以下代码:
Object obj = "hello";
编译时类型(或静态类型)的obj
变量是java.lang.Object
。然而,在执行时,obj
的值是指向java.lang.String
类型对象的引用。
l
的静态类型是原始类型List
,因为变量是这样声明的。对于变量,静态类型很简单 - 它只是变量声明的类型。其他表达式也有静态类型 - 例如,方法调用的静态类型是该方法的返回类型。 - Jon Skeetl
时才是。您确定自己没有想到另一个问题中的ls
,它是一个List<String>
吗? - Jon Skeet