Java空接口以及其接口方法討論

JDK中定義的空接口


import java.io.Serializable;

import java.lang.annotation.Annotation;

import java.rmi.Remote;

import java.util.RandomAccess;

個人理解爲:空接口僅做標記使用,無其他含義



Spring中也有大量空接口 列出部分如下:

public interface SpringProxy {}
public interface RawTargetAccess {}
public interface ThrowsAdvice extends AfterAdvice {}
public interface AfterAdvice extends Advice {}
public interface BeforeAdvice extends Advice {}
 

    開發控件時,常常會遇到一些需要繼承的接口,但卻不需要實現什麼方法,因爲這個接口是空的。

  接口只包含只有方法,屬性,索引器(有參屬性),事件四種成員。接口可以提供一組行爲和契約,當繼承一個接口時,你需要實現實現接口內的方法。

  沒有方法的接口,卻也可能有屬性,索引器,事件。

  這裏不討論我們在開發的時候是否需要使用空接口。我只想討論一下,這些空接口是如何起作用的。

  空接口的作用一般情況下就是標誌性,也就是實現了這種接口的都是表示他們都是某種類型的class,就像Serializable,他表示實現了該接口的類型都是可以被持久化和可以做傳輸的。這是一種能力的象徵。INamingContainer就是其中的典型。

  同樣在控件開發中,有的接口的實現方法僅僅從代碼上看似乎並不合邏輯。

  比如常用的:IPostBackDataHandler接口

  這個接口中有兩個方法bool LoadPostData();void RaisePostDataChangedEvent();

  LoadPostData()用來判斷數據是否發生改變,返回值爲bool。但你一般是看不到有代碼去調用RaisePostDataChangedEvent();

  因爲這部分的工作是框架來完成的。

空接口以及其接口方法討論

  所以我們猜想在繼承類空的接口後,雖然你所能看到代碼上並沒有什麼改變,但相對於框架來說這個繼承空接口的類被賦予了某些特性。

  在運行和使用的時候,框架會幫我們做很多我們看不到的事情。

 

發佈了68 篇原創文章 · 獲贊 1 · 訪問量 5932
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章