创建静态抽象类的实例

时间:2012-12-09 13:41:30

标签: java android abstract-class

我知道抽象类无法实例化。但我对下面的代码有疑问。此代码是android位图趣味演示(http://commondatastorage.googleapis.com/androiddevelopers/shareables/training/BitmapFun.zip)的一部分。

// ImageWorkerAdapter class is nested in another abstract class ImageWorker
public static abstract class ImageWorkerAdapter
{
public abstract Object getItem(int num);
public abstract int getSize();
}

//this snippet is seen in Images.java
public final static ImageWorkerAdapter imageWorkerUrlsAdapter = new ImageWorkerAdapter() { 
@Override
public Object getItem(int num) {
return Images.imageUrls[num];
}

我无法理解如何创建抽象类的实例。请帮我理解这段代码。

3 个答案:

答案 0 :(得分:6)

此代码表示扩展ImageWorkerAdapter抽象类的匿名类的初始化:

new ImageWorkerAdapter() { 
    @Override
    public Object getItem(int num) {
    return Images.imageUrls[num];
}

实际上,匿名实现是在花括号之间定义的。

作为一个匿名类,依赖抽象类或接口是完全有效的。

答案 1 :(得分:4)

您显示的代码未显示正在实例化的抽象类。

它显示正在实例化的anonymous class。在这种情况下,匿名类扩展了一个抽象类。您还可以在匿名类中实现接口,Runnable是一个非常常见的示例。

答案 2 :(得分:1)

您的代码不会实例化抽象类,而是定义新的匿名抽象类,其中包括扩展和实现(覆盖)其他抽象类。