1. 程式人生 > >(37):用標記介面定義型別

(37):用標記介面定義型別

所謂標記介面,就是指一個接口裡面什麼都沒有,只是標記實現類具有某種屬性。例如serilizeable就是這樣一個介面,他只是告訴jvm,繼承於這個介面的CLASS需要序列化處理,而我們根本不用實現這個介面的方法。

優點:

1.標記介面定義的型別是由被標記類的例項實現的;標記註解則沒有定義這樣的型別。

2.可以被更精確地進行鎖定。如果註解型別利用@Target(ElementType.TYPE)宣告,它就可以被應用到任何類或者介面,假設有一個標記只是適用於特殊的介面實現,但它卻可以被應用到類,如果定義成一個標記介面,就可以用它將唯一的介面擴充套件成適用的介面。

總之 , 標記介面和標記註解各有用處 . 如果想要定義一個任何新方法都不會與之關聯的型別 , 標記介面就是最好的選擇 . 如果想要標記程式元素而非類和介面 , 考慮到未來可能要給標記新增更多地資訊 , 或者標記要適合於已經廣泛使用了註解型別的框架 , 那麼標記註解是正確的選擇 .

相關推薦

37標記介面定義型別

所謂標記介面,就是指一個接口裡面什麼都沒有,只是標記實現類具有某種屬性。例如serilizeable就是這樣一個介面,他只是告訴jvm,繼承於這個介面的CLASS需要序列化處理,而我們根本不用實現這個介面的方法。 優點: 1.標記介面定義的型別是由被標記類的例項實現的;標記

arcgis jsapi介面入門系列4程式碼在地圖畫點線面

PS:用程式碼畫點這樣寫是為了跟後面的用滑鼠畫點線面區分出來 畫點 drawPointGraphic: function () { //點有多種樣式:一般的點,顯示文字,顯示圖片 //一般的點

caffe的python介面學習6訓練好的模型caffemodel來分類新的圖片

#coding=utf-8import caffeimport numpy as nproot='/home/xxx/' #根目錄deploy=root + 'mnist/deploy.prototxt' #deploy檔案caffe_model=root + 'mnist/lenet_iter

定義連結串列3連結串列的方式實現佇列

通過學習自定義連結串列,瞭解連結串列的資料結構。 本篇以連結串列的方式實現佇列。(參看陣列佇列   ,以及 迴圈佇列)     首先寫一個佇列的介面,描述其具有的基本功能。參看 自定義佇列:Queue.java 然後寫一個介面的實現類,

定義連結串列2連結串列的方式實現棧

通過學習自定義連結串列,瞭解連結串列的資料結構。 本篇以連結串列的方式實現棧。(參看以陣列的方式實現棧)   雖然自定義連結串列(1)中的連結串列的時間複雜度都為O(n),但若只對連結串列的表頭進行增、刪、查,都為O(1),利用這一點,可以用來實現棧。  

軟工作業4戶體驗分析——以 “師路南通網站” 為例

學員 androi blog 賬號 移動 用戶登錄 自動 二維 資源獲取 用戶體驗分析:以 “師路南通網站” 為例 一、目標 (1)針對師路南通,開展UX分 PS:對比另外2個學習網站(學生安

【Android開發—智能家居系列】手機對WIFI模塊進行配置

名稱 ash 端口 clas 方式 mac class 二階 target 【Android開發—智能家居系列】(二):用手機對WIFI模塊進行配置 http://blog.csdn.net/u010924834/article/details/4949672

袋鼠雲數據中臺專欄戶標簽體系建設的四字箴言

watermark 技術 不可 col cto 解讀 取數據 項目經理 itl 本文作者:子璽袋鼠雲數據中臺解決方案專家。擁有近10年大數據從業經驗,擁有PMP項目管理資格認證,精通數據類項目的開發實施和管理。曾服務過國家工商總局、北京市工商局、北京市財政局、廣州開發區大數

【Android開發—智慧家居系列】手機對WIFI模組進行配置

【Android開發—智慧家居系列】(二):用手機對WIFI模組進行配置   版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/u010924834/article/details/49496729   在實際開發中,我開

每天一個linux命令37date命令

每天一個linux命令(37):date命令 在linux環境中,不管是程式設計還是其他維護,時間是必不可少的,也經常會用到時間的運算,熟練運用date命令來表示自己想要表示的時間,肯定可以給自己的工作帶來諸多方便。 1.命令格式: &nbs

No.23 經典筆試題巨集來計算偏移量,判斷大小端聯合體法,指標法

寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 判斷大小端 程式碼1: //寫一個巨集,計算結構體中某變數相對於首地址的偏移,並給出說明 //定義的這個巨集將結構體裡邊的變數的地址取出後再強轉成char型,然後進行相減。 //注意:&s ==

Xilinx-ZYNQ7000系列-學習筆記2XADC測外部溫度值

Xilinx-ZYNQ7000系列-學習筆記(2):用XADC測外部溫度值 一、XADC簡介 Zynq器件XADC模組包括2個12位元1 MIPS的模數轉換器和相關的片上感測器,內建溫度感測器和功耗感測器,可實時監測片內結溫、各路電壓資料,並可輸出告警訊號。 XADC模擬輸入包括專用

MVVM Light 新手入門2 ViewModel / Model 中定義屬性 ,並在View中呼叫 利刃 MVVMLight

今天學習MVVM架構中“屬性”的新增並呼叫,特記錄如下,學習資料均來自於網路,特別感謝翁智華的利刃 MVVMLight系列。   一個視窗的基本模型如下: View(檢視) -> ViewModel (檢視模型)-> 多個Model(模型) 注: 檢視是使用者在螢幕上看到

Java類集框架Set子介面

Set子介面只是簡單地繼承了Collection介面,並沒有擴充其他的方法。Set集合中不允許儲存重複的資料。在Set介面下有兩個常用的子類:HashSet、TreeSet。HashSet是雜湊存放資料,而TreeSet是有序存放的子類,預設按照字母的升序排列。在實際開發中如果沒有排序要求,

Java類集框架List子介面

List子介面最大的功能是裡面儲存的資料可以存在重複的內容。List介面在對Collection介面擴充的方法如下: - public E get(int index):普通,取得索引編號的內容 - public E set(int index, E element):普通,修改指定索引

爬蟲入門系列 requests 構建知乎 API

爬蟲入門系列目錄: 在爬蟲系列文章 優雅的HTTP庫requests 中介紹了 requests 的使用方式,這一次我們用 requests 構建一個知乎 API,功能包括:私信傳送、文章點贊、使用者關注等,因為任何涉及使用者操作的功能都需要登入後才操作,所以在閱讀這篇文章前建議先了解

GitHub使用入門Git來訪問GitHub

GitHub是為開發者提供的Git倉庫的託管服務。這是一個讓開發者與朋友、同事、同學以及陌生人共享程式碼的完美場所。更多的地方我就不贅述了,總之。GitHub很棒,很棒,上面有很多神奇的程式碼和專案。 我們從這一期開始GitHub入門教程,教你如何使用GitH

Android-音視訊5 Camera API 採集視訊資料並用SurfaceView顯示

0.許可權設定 之前的文章都忘記說明了許可權的設定,一起需要的許可權如下: <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission andro

Android-音視訊6 MediaExtractor 和 MediaMuxer API 解析和封裝 mp4 檔案

1.MediaExtractor API的作用 作用: 可以把音視訊檔案的音訊和視訊分離,並抽取相應的資料通道,然後進行操作。 如何使用: 先要知道是針對哪個檔案操作,所以要用 setDataSource(String filePath) 設定目標檔案。 然後需要知道

Python3學習筆記Python實現深度優先

這裡主要是用Python實現下深度優先的概念,由於程式碼寫得比較隨意,就沒有封裝成類,而是寫成一個函式 用一個列表做為實驗資料,模擬成二叉樹結構,用遞迴的方式不斷獲取二叉樹上的左節點,一直到左節點 序號超出列表範圍,然後迴歸獲取右節點,以此來實現深度優先。 以下是程式碼