[英]Creating instance of static 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];
}
我無法理解如何創建抽象類的實例。 請幫我理解這段代碼。
此代碼表示擴展ImageWorkerAdapter
抽象類的匿名類的初始化:
new ImageWorkerAdapter() {
@Override
public Object getItem(int num) {
return Images.imageUrls[num];
}
實際上, 匿名實現是在花括號之間定義的。
作為一個匿名類,依賴於抽象類或接口是完全有效的。
您顯示的代碼不顯示正在實例化的抽象類。
它顯示了一個實例化的匿名類 。 在這種情況下,匿名類擴展了一個抽象類。 您還可以在匿名類中實現接口, Runnable
是一個非常常見的示例。
您的代碼不會實例化抽象類,而是定義新的匿名抽象類,其中包括擴展和實現(覆蓋)其他抽象類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.