android 建立工程的 package-info.java
一.引入
上文http://zy19982004.iteye.com/blog/1979208中,提到了註解類JyzTargetPackage可以定義為@Target(ElementType.PACKAGE),可是在被註解類裡我無論怎麼加,編譯器都報錯,於是引入了package-info.java這個檔案。
二.建立package-info.java
- "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."勾上就行了。
- 如果不幸的是你已經建立了這個包並在裡面定義了很多類,而eclispe又是不能直接建立一個package-info.java檔案的。只能在包對應資料夾裡,手動建立一個package-info.java,寫上包名,最後重新整理eclispe即可。
三.package-info.java的作用
- "Package annotations must be in file package-info.java",package-info.java為我們提供了包註解的地方。JyzTargetPackage(http://zy19982004.iteye.com/blog/1979208)苦苦尋找終於找到地方了。
- 提供包級別的類(或介面),這些類(或介面)只有本包裡才能訪問,即使是子包也不能訪問。
- 提供包的整體註釋說明。
package-info.java
Java程式碼- /**
- * <b>package-info不是平常類,其作用有三個:</b><br>
- * 1、為標註在包上Annotation提供便利;<br>
- * 2、宣告包的私有類和常量;<br>
- * 3、提供包的整體註釋說明。<br>
- *
- * @author [email protected]
- */
- @JyzTargetPackage(version="1.0")
- package com.jyz.study.jdk.annotation;
- class PackageInfo{
- publicvoid common(){
- System.out.println("sa");
- }
- }
- class PackageInfoGeneric<T extends Throwable>{
- private T obj;
- publicvoid set(T obj){
- this.obj = obj;
- }
- publicvoid common(){
- System.out.println(obj + "sa");
- }
- }
- interface packageInfoInteger{
- publicvoid test();
- }
- class PackageConstants{
- publicstaticfinal String ERROE_CODE = "100001";
- }
TestPackageInfo.java
Java程式碼- package com.jyz.study.jdk.annotation;
- import java.io.IOException;
- /**
- * 測試package-info.java檔案的作用
- * 1、為標註在包上Annotation提供便利;<br>
- * 2、宣告包的私有類和常量;<br>
- * @author [email protected]
- *
- */
- publicclass TestPackageInfo {
- publicstaticvoid main(String[] args) {
- //1
- Package p = Package.getPackage("com.jyz.study.jdk.annotation");
- if(p != null && p.isAnnotationPresent(JyzTargetPackage.class)){
- JyzTargetPackage nav = p.getAnnotation(JyzTargetPackage.class);
- if(nav != null){
- System.out.println("package version:" + nav.version());
- }
- }
- //2
- PackageInfo packageInfo = new PackageInfo();
- packageInfo.common();
- //泛型也能很好的工作,在pakcage-info.java裡定義的類和普通類沒什麼區別
- PackageInfoGeneric<Exception> packageInfoGeneric = new PackageInfoGeneric<Exception>();
- packageInfoGeneric.set(new IOException("device io"));
- packageInfoGeneric.common();
- Sub sub = new Sub();
- sub.test();
- System.out.println(PackageConstants.ERROE_CODE);
- }
- }
- class Sub implements packageInfoInteger{
- @Override
- publicvoid test() {
- System.out.println("sub");
- }
- }
- console output:
- package version:1.0
- sa
- java.io.IOException: device iosa
- sub
- 100001
需要注意兩點
- package-info.java裡不能宣告public class(或 interface)
- 剛開始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