java我们实际上是在实例化一个抽象类吗?
// Concrete implementation built atop skeletal implementation
static List<Integer> intArrayAsList(final int[] a) {
if (a == null)
throw new NullPointerException();
return new AbstractList<Integer>() {
public Integer get(int i) {
return a[i]; // Autoboxing
}
@Override
public Integer set(int i, Integer val) {
int oldVal = a[i];
a[i] = val; // Auto-unboxing
return oldVal; // Autoboxing
}
public int size() {
return a.length;
}
};
}
到目前为止,我知道我们根本无法实例化抽象类。但是我们在这里对^{
# 1 楼答案
否,您正在创建一个匿名类
您的代码:
相当于:
# 2 楼答案
不,它不是实例化抽象类,因为代码提供了该类的实现。它就像一个匿名的内部类
就像信息一样,所有类型的内部类都会生成一个。编译过程后的类文件。所以,代码:
测试。java
将产生:
# 3 楼答案
您正在创建一个继承抽象类的匿名类。 您需要将抽象类的所有抽象方法实现到匿名类中
# 4 楼答案
否,您正在创建一个匿名类。您正在对抽象类进行子类化,同时提供一个实现并实例化它
如果你尝试这个:
您将得到一个错误,因为您不会提供具体的实现
如果您感到困惑,可以随时查看官方教程。这是: Java Inner Classes