java自定義注解學習筆記

注解學習筆記之自定義注解

@Target({1,2,3,4,5,6,7})

  • 1.ElementType.CONSTRUCTOR:用于描述構造器
  • 2.ElementType.FIELD:用于描述域
  • 3.ElementType.LOCAL_VARIABLE:用于描述局部變量
  • 4.ElementType.METHOD:用于描述方法
  • 5.ElementType.PACKAGE:用于描述包
  • 6.ElementType.PARAMETER:用于描述參數
  • 7.ElementType.TYPE:用于描述類、接口(包括注解類型) 或enum聲明

@Retention(1/2/3)

  • 1.RetentionPolicy.SOURCE:注解只保留在源文件,當Java文件編譯成class文件的時候,注解被遺棄;
  • 2.RetentionPolicy.CLASS:注解被保留到class文件,但jvm加載class文件時候被遺棄,這是默認的生命周期;
  • 3.RetentionPolicy.RUNTIME:注解不僅被保存到class文件中,jvm加載class文件之后,仍然存在;

自定義注解的練習代碼

SxtTable

  • 類和表的對應注解
/*** 自定義一個類和表的對應注解*/import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target(ElementType.TYPE)//指明此注解用于注解類
@Retention(RetentionPolicy.RUNTIME)//指明注解不僅被保存到class文件中,jvm加載class文件之后,仍然存在
public @interface SxtTable {String value();//值為類對應的表名
}

SxtField

  • 屬性注解
/*** 自定義一個屬性注解*/import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface SxtField {String columnName();//表中字段的列名String type();//字段的類型int length();//字段的長度
}

SxtStudent

  • 學生類
/*** 創建一個student類并使用自定義的注解*/
@SxtTable("tb_student")//對類使用注解
public class SxtStudent {@SxtField(columnName = "id",type ="int",length = 10)//對屬性id使用注解private int id;@SxtField(columnName = "sname",type ="varchar",length = 10)//對屬性studentName使用注解private String studentName;@SxtField(columnName = "age",type ="int",length = 4)//對屬性age使用注解private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getStudentName() {return studentName;}public void setStudentName(String studentName) {this.studentName = studentName;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

SxtTest

  • 測試類獲取注解信息并打印
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;/*** 使用反射讀取注解信息,模擬注解信息處理的流程*/
public class SxtTest {public static void main(String[] args) {try {Class clazz = Class.forName("com.sxt.SxtStudent");//獲得類所有的注解(這只直接獲得所有有效的注解)Annotation[] annotations = clazz.getAnnotations();for (Annotation annotation : annotations) {//打印獲取到的注解信息System.out.println(annotation);}//也可以獲得指定的注解(獲得指定的注解)這里指定的是SxtTable 如果有多個類注解也可以依次指定SxtTable sxtTable = (SxtTable) clazz.getAnnotation(SxtTable.class);//打印獲取到的注解信息System.out.println(sxtTable.value());//獲得屬性的注解(這里只拿studentName這一個屬性來做示例)Field studentName = clazz.getDeclaredField("studentName");SxtField sxtField = studentName.getAnnotation(SxtField.class);//打印獲取到的注解信息System.out.println(sxtField.columnName()+"--"+sxtField.type()+"--"+sxtField.length());//根據獲得的表名,字段信息,可以通過jdbc 執行sql語句在數據庫中生成對應的表//本例用來練習自定義注解故不再往下往下寫只對信息進行了打印} catch (Exception e) {e.printStackTrace();}}
}

轉載于:https://www.cnblogs.com/cqzy/p/10924011.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448888.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448888.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448888.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[xsy3132]數表

題意:一個$n\times m$的數表,數值$\in[0,4)$,你可以任意次選擇一行或一列$1,\text{mod }4$,要最小化所有數的和 因為$n\leq10$,所以數表可以看成$m$個$n$位$4$進制數$a_{1\cdots m}$,以下使用不進位加法 定…

linux 下載、安裝 maven

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 創建maven的文件夾并下載maven的tar包到此文件夾中 //進入一個目錄 cd /usr/local//創建一個文件夾 mkdir maven//下載maven的tar包…

ELK4之進階學習

1.精確查找和模糊查找(term和match的區別) match經過分析(analyer)的, term是不經過分詞,直接去倒排索引中查找精確的值. 2.建議器的簡介(最左前綴或者自帶的做) (1)直接用現成的 (2)不只是糾錯,還有建議等等. (3)優點:用戶體驗,服務器減少請求(減少壓力,太耗電了,熱量太大) (4…

女人必知 教你認清6種隱性壞男人

周圍不乏有女朋友喜歡歷數往事、追憶曾擦肩而過的男人,有的說如果不是自己太苛求提早要見他家人引起反感,早就和心愛的人儷影雙雙甜蜜快樂了,還有的說暗戀的男生那一夜向他表露情感、她萬分感動、可男生最后提出上床她拒絕了、因而錯失了一段…

c# 編程學習(二)

2019獨角獸企業重金招聘Python工程師標準>>> 標識符是對程序中的各個元素進行標識的名稱。 ? 只能使用字母(大寫和小寫)、數字和下劃線 ? 標識符必須以字母或下劃線開頭 變量是容納值的存儲位置。可將變量想象成容納臨時信息的容器 命名變量的建議: …

linux 中的 nohup 命令(設置后臺進程): nohup: ignoring input and appending output to ‘nohup.out’

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 一、Linux 下使用 nohup Unix/Linux下一般比如想讓某個程序在后臺運行,很多都是使用 & 在程序結尾來讓程序自動運行。 …

PowerDesigner表結構和字段大小寫轉換

原文:https://www.cnblogs.com/zhzhang/p/3946609.html 【轉】PowerDesigner表結構和字段大小寫轉換 【轉自】http://blog.csdn.net/xysh1991/article/details/8016192 使用方法:進入PowerDesigner,打開一個PDM,在菜單欄找到&…

解決:Could not find or load main class org.apache.rocketmq.example.quickstart.Producer

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1.情景描述 :我只是想安裝運行 rocketmq,執行命令: sh bin/tools.sh org.apache.rocketmq.example.…

深入理解C++ 虛函數表

目錄 深入理解C 虛函數表虛函數表概述單繼承下的虛函數表派生類未覆蓋基類虛函數派生類覆蓋基類虛函數多繼承下的虛函數表無虛函數覆蓋派生類覆蓋基類虛函數鉆石型虛繼承總結幾個原則安全性問題深入理解C 虛函數表 ? C中的虛函數的作用主要是實現了多態的機制。關于多態&#…

react-native-baidu-map使用及注意問題

使用組件: react-native-baidu-map 獲取百度地圖API_KEY 地址:lbsyun.baidu.com,在控制臺成功創建應用后,就可以看到應用的api key了 安裝 yarn add react-native-baidu-map 復制代碼原生部分 Android配置 react-native link reac…

簡單掃清身體垃圾

“我們的身體在被‘設計’之初,就擁有了自主掃除體內垃圾的功能。只不過,這需要我們按照正確的方法去激發它 。”美國暢銷書作者喬斯卡曼和朱莉佩萊斯,在她們去年合著的《自我清潔》一書中強調了養成良好生活習慣可為身體排毒的重要性。 近日…

linux (阿里云 CentOS7) 中安裝配置 RocketMQ

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 JDK1.8的安裝: 1.檢查系統的JDK版本 根目錄下操作:cd java -version 2.檢測JDK安裝包 rpm -qa | grep ja…

Bootstrap簡介

1.使用準備 1.1 Bootstrap的下載 http://www.bootcss.com,下載用于生產環境的Bootstrap即可。 1.2 Bootstrap包含的內容 ● 全局CSS:基本的 HTML 元素均可以通過 class 設置樣式并得到增強效果;還有先進的柵格系統。 ● 組件:無數…

用TortoiseGit時的實用git命令

生成并獲取 sshkey: ssh-keygen -t rsa -C "xxxxxxxxxx.com" cat ~/.ssh/id_rsa.pub 克隆倉庫: git clone xxxxxx/xxx.git 重命名文件: mv file_name new_file_name git目錄區分大小寫: git config core.ignorecase fal…

有一種失敗叫瞎忙

很多時候,我們都在不知不覺的瞎忙,為了避免這樣的瞎忙,特為大家分享一個小的故事。 在一個山谷的禪房里有一位老禪師,他發現自己有一個徒弟非常勤奮,不管是去化緣,還是去廚房洗菜,這個徒弟從…

解決:org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, TopicTest

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 原因1:啟動 broker 方式不對。 我完全是按照官方文檔操作的,在網上看到說這一步是錯誤的啟動 broker 方式&#…

tomcat需要設置環境變量嗎

tomcat是一款輕量級web應用服務器,安裝的時候我們都是直接解壓zip包,然后在bin目錄下雙擊startup.bat就可以啟動了(當然,前提是本地要安裝jdk并配置JAVA_HOME環境變量) 所以我一直認為tomcat是不用配置環境變量的 但是…

Intro OpenCL Tutorial

Benedict R. Gaster, AMD Architect, OpenCL? OpenCL? is a young technology, and, while a specification has been published (www.khronos.org/registry/cl/), there are currently few documents that provide a basic introduction with examples. This article helps…

雷林鵬分享:codeigniter框架文件上傳處理

CodeIgniter 框架input表單的重新填充,主要是針對text、radio、checkbox、select等input表單,那么對于文件上傳表單file該如何處理呢? 自己的處理方式: //設置文件上傳屬性 $webroot $_SERVER[DOCUMENT_ROOT]; $time time(); $year date(…

jQuery基本使用

一.what 1).一個優秀的JS函數庫; 2).中大型WEB項目開發的首選; 3).使用了jQuery的網站超過90%; 4).http://jquery.com/; 二.why(即jq的好處) html元素選取(選擇器)&#…