最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解 Java注解及實(shí)例

 更新時(shí)間:2017年09月21日 15:12:35   作者:海那邊的小萌男  
這篇文章主要介紹了深入理解 Java注解及實(shí)例的相關(guān)資料,希望通過(guò)本文大家能夠掌握java注解的知識(shí),需要的朋友可以參考下

 Java注解

什么是注解?

Java中的注解就是Java源代碼的元數(shù)據(jù),也就是說(shuō)注解是用來(lái)描述Java源代碼的。 基本語(yǔ)法就是:@后面跟注解的名稱。

①Override:標(biāo)識(shí)某一個(gè)方法是否正確覆蓋了它的父類的方法。
②Deprecated:表示已經(jīng)不建議使用這個(gè)類成員了。 它是一個(gè)標(biāo)記注解。
③SuppressWarnings:用來(lái)抑制警告信息 等等。

要更好的理解注解,我們可以自己寫(xiě)一個(gè)注解

@Target : 用來(lái)限制注解可以用到那幾個(gè)地方。比方可以用到類上,可以用到方法勝都可以用@Target來(lái)限制

@Retention:這個(gè)是用來(lái)控制注解編譯在Class中的狀態(tài)的,默認(rèn)是編譯到Class里去,但是不讀出來(lái),還有兩種狀態(tài)是 不編譯到Class里面去, 最后一種是編譯過(guò)于,并且可以通過(guò)類反射讀出來(lái)的

@Documented : 可以利用網(wǎng)絡(luò)來(lái)生成注解的

@Inherited : 子類是否能繼承注解

那么下面是我們自己寫(xiě)的注解類

package cn.hncu.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

  @Inherited
  @Documented
  @Retention(RetentionPolicy.RUNTIME)
  @Target({ElementType.TYPE,ElementType.METHOD}) //目標(biāo): 限制該注解能夠用在哪些地方,如果沒(méi)定義@Target則不限制即無(wú)論哪里都可以用
  public @interface MyAnno {
    public String schoolName() default "hncu"; //注解中的成員變量要這么定義
  }

測(cè)試,學(xué)習(xí)使用

package cn.hncu.annotation;

import java.util.ArrayList;
import java.util.Collection;

@MyAnno
public class AnnotationHello {

  private String name="hncu";

  public static void main(String[] args) {
    System.out.println("hello");
  }

  @Override
  public String toString() {
    return super.toString();
  }

  @MyAnno(schoolName="大城院")
  @Deprecated
  public void abc(){
    System.out.println("abc...");
  }

  @SuppressWarnings({ "rawtypes", "unchecked" })
  public void colDemo(){
    Collection col = new ArrayList();
    col.add("aa");
  }


  //注解,只是給其它程序或代碼讀取信息的
  @MyAnno(schoolName="湖南城市學(xué)院")
  public void demo(){
    System.out.println("1111111");
  }

  @MyAnno //因?yàn)樵撟⒔庵械某蓡T變量schoolName設(shè)置了默認(rèn)值,因此這里可以不賦值。若沒(méi)設(shè)置默認(rèn)值,則必須要在這里賦值
  public void demo2(){
    System.out.println("1111111");
  }

  //@MyAnno("abc") //如果注解中的變量名是value,則這里可以不給出變量名
  public void demo3(){
    System.out.println("33333333333");
  }

}

通過(guò)類反射讀出來(lái)

package cn.hncu.annotation;

import java.lang.reflect.Method;

public class UseMyAnno {
  public static void main(String[] args) {
    try {
      Class c = Class.forName("cn.hncu.annotation.AnnotationHello");

      //判斷類上面是否有該注解(@MyAnno)
      boolean boo = c.isAnnotationPresent(MyAnno.class);
      System.out.println("類上是否有該注解:"+boo);

      Method ms[] = c.getDeclaredMethods();
      for(Method m: ms){
        //判斷方法上面是否有該注解(@MyAnno)
        if(m.isAnnotationPresent(MyAnno.class)){
          System.out.println("有注解的方法:"+m.getName());

          //演示讀取注解中成員變量的值----從m對(duì)象中獲取該注解,進(jìn)而讀取它的成員變量的值
          MyAnno ma = (MyAnno)m.getAnnotation(MyAnno.class);
          System.out.println("學(xué)校名稱:=="+ma.schoolName());
          //獲取到了這些數(shù)據(jù)過(guò)后,下面就可以開(kāi)始你的處理了
        }
      }

    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
  }
}

如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • 使用springboot跳轉(zhuǎn)到指定頁(yè)面和(重定向,請(qǐng)求轉(zhuǎn)發(fā)的實(shí)例)

    使用springboot跳轉(zhuǎn)到指定頁(yè)面和(重定向,請(qǐng)求轉(zhuǎn)發(fā)的實(shí)例)

    這篇文章主要介紹了使用springboot跳轉(zhuǎn)到指定頁(yè)面和(重定向,請(qǐng)求轉(zhuǎn)發(fā)的實(shí)例),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java開(kāi)發(fā)AOP基礎(chǔ)JdkDynamicAopProxy

    java開(kāi)發(fā)AOP基礎(chǔ)JdkDynamicAopProxy

    這篇文章主要為大家介紹了java開(kāi)發(fā)AOP基礎(chǔ)JdkDynamicAopProxy源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Struts2 使用OGNL遍歷map方法詳解

    Struts2 使用OGNL遍歷map方法詳解

    這篇文章主要介紹了Struts2 使用OGNL遍歷map方法詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-09-09
  • Java利用JavaCPP調(diào)用算法示例

    Java利用JavaCPP調(diào)用算法示例

    本文主要介紹了Java利用JavaCPP調(diào)用算法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Spring Boot與ActiveMQ整合的步驟

    Spring Boot與ActiveMQ整合的步驟

    今天小編就為大家分享一篇關(guān)于Spring Boot與ActiveMQ整合的步驟,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • IDEA之啟動(dòng)參數(shù),配置文件默認(rèn)參數(shù)的操作

    IDEA之啟動(dòng)參數(shù),配置文件默認(rèn)參數(shù)的操作

    這篇文章主要介紹了IDEA之啟動(dòng)參數(shù),配置文件默認(rèn)參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • httpclient的監(jiān)控流程源碼解讀

    httpclient的監(jiān)控流程源碼解讀

    這篇文章主要為大家介紹了httpclient的監(jiān)控流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Java設(shè)計(jì)模式之迪米特原則精解

    Java設(shè)計(jì)模式之迪米特原則精解

    設(shè)計(jì)模式(Design pattern)代表了最佳的實(shí)踐,通常被有經(jīng)驗(yàn)的面向?qū)ο蟮能浖_(kāi)發(fā)人員所采用。設(shè)計(jì)模式是軟件開(kāi)發(fā)人員在軟件開(kāi)發(fā)過(guò)程中面臨的一般問(wèn)題的解決方案。本篇介紹設(shè)計(jì)模式七大原則之一的迪米特原則
    2022-02-02
  • SpringBoot實(shí)現(xiàn)權(quán)限驗(yàn)證的示例步驟

    SpringBoot實(shí)現(xiàn)權(quán)限驗(yàn)證的示例步驟

    權(quán)限驗(yàn)證是一種用于控制對(duì)系統(tǒng)資源和操作的訪問(wèn)的機(jī)制。它允許開(kāi)發(fā)人員定義誰(shuí)可以執(zhí)行特定操作或訪問(wèn)特定資源,并確保只有經(jīng)過(guò)授權(quán)的用戶才能執(zhí)行這些操作,這篇文章主要介紹了SpringBoot實(shí)現(xiàn)權(quán)限驗(yàn)證,需要的朋友可以參考下
    2023-08-08
  • 使用AbstractRoutingDataSource實(shí)現(xiàn)數(shù)據(jù)源動(dòng)態(tài)切換的實(shí)例

    使用AbstractRoutingDataSource實(shí)現(xiàn)數(shù)據(jù)源動(dòng)態(tài)切換的實(shí)例

    AbstractRoutingDataSource 是 Spring 框架提供的一個(gè)抽象類,用于實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源路由,這個(gè)類主要用于多數(shù)據(jù)源場(chǎng)景,其中可以根據(jù)不同的條件動(dòng)態(tài)地切換到不同的數(shù)據(jù)源,本文給大家介紹了如何使用AbstractRoutingDataSource實(shí)現(xiàn)數(shù)據(jù)源動(dòng)態(tài)切換,需要的朋友可以參考下
    2024-03-03

最新評(píng)論

凤翔县| 边坝县| 石城县| 巨野县| 神池县| 邵武市| 武功县| 澄城县| 寻乌县| 通渭县| 京山县| 尼玛县| 伊春市| 湖北省| 江北区| 永济市| 汉寿县| 泸溪县| 达孜县| 古交市| 南部县| 城口县| 南丹县| 剑河县| 保山市| 曲靖市| 定安县| 姜堰市| 长海县| 阿勒泰市| 齐齐哈尔市| 武川县| 漾濞| 罗田县| 韶山市| 扬州市| 保德县| 景东| 曲阜市| 通江县| 玉田县|