1. 程式人生 > >android 建立工程的 package-info.java

android 建立工程的 package-info.java

一.引入 

     上文http://zy19982004.iteye.com/blog/1979208中,提到了註解類JyzTargetPackage可以定義為@Target(ElementType.PACKAGE),可是在被註解類裡我無論怎麼加,編譯器都報錯,於是引入了package-info.java這個檔案。

二.建立package-info.java

  1. "I found that when you create a new package in eclispe there is a check box to check if you want a package-info.java."勾上就行了。
  2. 如果不幸的是你已經建立了這個包並在裡面定義了很多類,而eclispe又是不能直接建立一個package-info.java檔案的。只能在包對應資料夾裡,手動建立一個package-info.java,寫上包名,最後重新整理eclispe即可。

三.package-info.java的作用

  1. "Package annotations must be in file package-info.java",package-info.java為我們提供了包註解的地方。JyzTargetPackage(http://zy19982004.iteye.com/blog/1979208)苦苦尋找終於找到地方了。
  2. 提供包級別的類(或介面),這些類(或介面)只有本包裡才能訪問,即使是子包也不能訪問。
  3. 提供包的整體註釋說明。

 package-info.java

Java程式碼  收藏程式碼
  1. /**   
  2.  * <b>package-info不是平常類,其作用有三個:</b><br>   
  3.  * 1、為標註在包上Annotation提供便利;<br>   
  4.  * 2、宣告包的私有類和常量;<br>   
  5.  * 3、提供包的整體註釋說明。<br>   
  6.  *  
  7.  * @author [email protected]  
  8. */
  9. @JyzTargetPackage(version="1.0")  
  10. package com.jyz.study.jdk.annotation;  
  11. class PackageInfo{  
  12.     publicvoid common(){  
  13.         System.out.println("sa");  
  14.     }  
  15. }  
  16. class PackageInfoGeneric<T extends Throwable>{  
  17.     private T obj;  
  18.     publicvoid set(T obj){  
  19.         this.obj = obj;  
  20.     }  
  21.     publicvoid common(){  
  22.         System.out.println(obj + "sa");  
  23.     }  
  24. }  
  25. interface packageInfoInteger{  
  26.     publicvoid test();  
  27. }  
  28. class PackageConstants{  
  29.     publicstaticfinal String ERROE_CODE = "100001";     
  30. }  

TestPackageInfo.java

Java程式碼  收藏程式碼
  1. package com.jyz.study.jdk.annotation;  
  2. import java.io.IOException;  
  3. /** 
  4.  * 測試package-info.java檔案的作用 
  5.  * 1、為標註在包上Annotation提供便利;<br>   
  6.  * 2、宣告包的私有類和常量;<br>   
  7.  * @author [email protected] 
  8.  * 
  9.  */
  10. publicclass TestPackageInfo {  
  11.     publicstaticvoid main(String[] args) {  
  12.         //1
  13.         Package p = Package.getPackage("com.jyz.study.jdk.annotation");  
  14.         if(p != null && p.isAnnotationPresent(JyzTargetPackage.class)){  
  15.             JyzTargetPackage nav = p.getAnnotation(JyzTargetPackage.class);  
  16.             if(nav != null){   
  17.                 System.out.println("package version:" + nav.version());  
  18.             }  
  19.         }  
  20.         //2
  21.         PackageInfo packageInfo = new PackageInfo();  
  22.         packageInfo.common();  
  23.         //泛型也能很好的工作,在pakcage-info.java裡定義的類和普通類沒什麼區別
  24.         PackageInfoGeneric<Exception> packageInfoGeneric = new PackageInfoGeneric<Exception>();  
  25.         packageInfoGeneric.set(new IOException("device io"));  
  26.         packageInfoGeneric.common();  
  27.         Sub sub = new Sub();  
  28.         sub.test();  
  29.         System.out.println(PackageConstants.ERROE_CODE);  
  30.     }  
  31. }  
  32. class Sub implements packageInfoInteger{  
  33.     @Override
  34.     publicvoid test() {  
  35.         System.out.println("sub");  
  36.     }  
  37. }  
  38. console output:  
  39. package version:1.0
  40. sa  
  41. java.io.IOException: device iosa  
  42. sub  
  43. 100001

  需要注意兩點

  1. package-info.java裡不能宣告public class(或 interface)
  2. 剛開始p.isAnnotationPresent(JyzTargetPackage.class)返回false,後來找到原因JyzTargetPackage沒有加上@Retention(RetentionPolicy.RUNTIME)。

相關推薦

android 建立工程package-info.java

一.引入       上文http://zy19982004.iteye.com/blog/1979208中,提到了註解類JyzTargetPackage可以定義為@Target(ElementType.PACKAGE),可是在被註解類裡我無論怎麼加,編譯器都報錯,於是引入

package-info.java的使用

一.引入       上文中,提到了註解類JyzTargetPackage可以定義為@Target(ElementType.PACKAGE),可是在被註解類裡我無論怎麼加,編譯器都報錯,於是引入了package-info.java這個檔案。  

eclipse新建package會自動生成package-info.java

今天新建專案,再新建package的過程中發現自動生成了package-info.java,還需要手動刪掉,後來發現是在新建package時,勾選了 create package-info.java的選項,去掉就好啦

64位ubuntu 配置andorid環境建立工程沒有R.java檔案

64位ubuntu 配置andorid環境建立或倒入工程沒有R.java檔案 錯誤描述:[2012-11-26 13:43:08 - adb] Unexpected exception 'Cannot run program "/opt/adt-bundle-linux/s

hadoop編譯原始碼報錯:package-info.java: 未結束的字串字面值

compile-core-classes:        [javac] Compiling 386 source files to F:\hadoop\common\trunk\build\classes        [javac] F:\hadoop\common\trunk\build\src\org

另類的package-info.java檔案探討

    翻看以前的筆記,看到一個特殊的java檔案:pacakge-info.java,雖然有記錄,但是不全,就嘗試著追蹤一下該問題,分享一下流水賬式的結果。 首先,它不能隨便被建立。在Eclipse中, package-info檔案不能隨便被建立,會報“Type name

PACKAGE-INFO.JAVA 作用及用法詳解

package-info.java對於經常使用外部包的程式設計師來說應該是熟悉陌生人。因為不是專門開發包的程式設計師很少需要關注它,而又常在其他包中看到他,眼很熟。它到底有哪些特性和作用及如何使用呢?程式設計師講究動口不如動手,何不建立一個試試。開啟Eclipse,new class,哦!建立失敗,‘-’

Java中的package-info.java作用

前言   之前在Eclipse中,總是會不小心勾選到這個複選框,之前並沒有怎麼在意這個java檔案,畢竟生成之後只有以下這麼點內容。         而且你也不能直接建立package-info

另類的package-info.java檔案探討 [轉]

翻看以前的筆記,看到一個特殊的java檔案:pacakge-info.java,雖然有記錄,但是不全,就嘗試著追蹤一下該問題,分享一下流水賬式的結果。 首先,它不能隨便被建立。在Eclipse中, package-info檔案不能隨便被建立,會報“Type name

java 中的package-info.java 的作用小總結

開發十年,就只剩下這套架構體系了! >>>   

android建立通知欄(java版)

轉載請註明出處:https://blog.csdn.net/u011038298/article/details/84345920 import android.app.Application; import android.app.NotificationChannel; import and

如何在安卓原生專案中加入mui相關檔案進行開發(使用新版本5+SDK建立最簡Android原生工程Android studio))

緣起 最近在搭一個android開發的demo,專案使用androidstudio作為開發工具,使用混合式開發,途中需要整合mui.但是網上找了很多教程都是老版本的,以至於MUI官網提供的demo已經不符合教程了。後來進過多方努力終於找到了新版的教程,特此記錄。 新版教程連結點這

建立Maven版的java工程時的jdk配置問題

建立Maven版的java工程,它預設的jdk的版本是1.5的,這時所帶來的影響(常規程式碼沒有什麼影響,只是對於集合有較大的影響): 在jdk1.5以上的版本,集合可以這樣的寫:List<String> list=new Array<>();   

Android SDK版本號與API級別的對應關係以及建立工程時選擇API版本的注意事項

API 3:android 1.5 API 4:android 1.6 API 5:android 2.0 API 6:android 2.0.1 API 7:android 2.1 API 8:android 2.2 API 9:android 2.3 API 10:an

day1:Android Wear開發入門--建立手錶模擬器及在as平臺上建立Android Wear工程

第一次接觸Android Wear開發,不知如何著手。首先研究了一下手錶,看了一下里面的應用,腦子浮現的第一個問題是:1.如何將應用部署到手錶上?2.在Android studio平臺上怎麼開發?在網上查找了一些資料,折騰了幾天終於手機連線上了手錶模擬器。

Eclipse ADT 建立Android專案----工程目錄詳解

一、Eclipse建立Android工程 步驟:File→New→Android Application Project       1.工程名稱必須唯一,在Project name中填入HelloAndroid。       2.包的名稱空間,需要遵循Java包的命名方

IntelliJ IDEA如何建立一個簡單的java工程

java語言是一種非常流行的開發語言,針對java語言開發而言,選擇一個合適的開發工具可以有效的提高我們的開發效率,現在各大企業用得較多的開發工具有兩個:Eclipse 和 IntelliJ IDEA 。 Eclipse是一款比較成熟的java開發工具,有很大的市場佔有量,

Android Studio(二)】建立工程

Android Studio讓你可以很輕鬆的建立多種類別的安卓應用,比如Phone,table,TV,Wear,Google Glass等。在新建的專案嚮導中你可以根據你自己的需求建立你所需要的工程。 接下來講如何在Android Studio中建立一個工程。 Step1:

使用Java package-info類為包服務

Java 中有一個特殊的類:package-info 類,它是專門為本包服務的,為什麼說它特殊呢?主要體現在3 個方面: 它不能隨便被建立 在一般的IDE 中,Eclipse、package-info

maven工程src/main/java目錄無法創建問題

知識庫 word tle prop works lan rep lac title 在項目上右鍵選擇properties,然後點擊Java build path,在Librarys下,編輯JRE System Library,選擇 workspace default jre