国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java知識點總結(注解-解析注解)

awkj / 583人閱讀

摘要:知識點總結注解解析注解知識點總結注解通過反射獲取類函數或成員上的運行時注解信息,從而實現動態控制程序運行的邏輯。

Java知識點總結(注解-解析注解)

@(Java知識點總結)[Java, 注解]

通過反射獲取類、函數或成員上的運行時注解信息,從而實現動態控制程序運行的邏輯。

使用注解步驟:

定義注解

類中使用注解

解析注解

示例:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
 
@Target(value={ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MethodAnnotation {
  String value();
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
 
@Target(value={ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldAnnotation {
  String columnName();
  String type();
  int length();
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
 
@Target(value={ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface TableAnnotation {
  String value();
}
@TableAnnotation("tb_student")
public class Student {
  @FieldAnnotation(columnName="id",type="int",length=10)
  private int id;
  @FieldAnnotation(columnName="sname",type="varchar",length=10)
  private String name;
  @FieldAnnotation(columnName="age",type="int",length=3)
  private int age;
  
  @MethodAnnotation("get方法上的注解")
  public int getId() {
   return id;
  }
  @MethodAnnotation("set方法上的注解")
  public void setId(int id) {
   this.id = id;
  }
  public String getName() {
   return name;
  }
  public void setName(String name) {
   this.name = name;
  }
  public int getAge() {
   return age;
  }
  public void setAge(int age) {
   this.age = age;
  }
  
}
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
 
public class Demo3 {
 
  // 使用反射獲取注解,生成類對應的數據庫表
  private static void test1(Class clazz) {
 
    // 獲得類所有的注解
    Annotation[] annotations = clazz.getAnnotations();
    for (Annotation a : annotations) {
     System.out.println(a);
    }
 
    // 通過注解的名字獲取注解
    TableAnnotation t = (TableAnnotation) clazz.getAnnotation(TableAnnotation.class);
    System.out.println(t.value());
 
    // 獲得屬性上的注解
    try {
     Field f = clazz.getDeclaredField("age");
     FieldAnnotation fa = f.getAnnotation(FieldAnnotation.class);
 
     System.out.println("字段名稱:" + fa.columnName() + ",字段類型:" + fa.type() + ",字段長度:" + fa.length());
 
    } catch (NoSuchFieldException | SecurityException e) {
     e.printStackTrace();
    }
 
    // 根據獲得的表名、字段信息,拼出DDL語句,然后使用JDBC執行這個SQL語句,在數據庫中生成相關的表
 
  }
 
  //獲取方法上的注解
  private static void test2(Class clazz) {
    // 獲取所有方法上的注解
    Method[] ms = clazz.getMethods();
    for (Method m : ms) {
     boolean isExist = m.isAnnotationPresent(MethodAnnotation.class);
     if (isExist) {
       MethodAnnotation ma = m.getAnnotation(MethodAnnotation.class);
       System.out.println(ma);
     }
    }
 
    // 獲取指定方法上的注解
    try {
     Method method = clazz.getMethod("getId", null);
     Annotation[] as = method.getAnnotations();
     for (Annotation a : as) {
       if (a instanceof MethodAnnotation) {
         MethodAnnotation ma = (MethodAnnotation) a;
         System.out.println(ma);
       }
     }
 
    } catch (NoSuchMethodException | SecurityException e) {
     e.printStackTrace();
    }
  }
 
  public static void main(String[] args) {
    Class clazz = null;
    try {
     clazz = Class.forName("com.gs.Student");
    } catch (ClassNotFoundException e) {
     e.printStackTrace();
    }
    test1(clazz);
 
    test2(clazz);
 
  }
 
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71561.html

相關文章

  • Java 總結

    摘要:中的詳解必修個多線程問題總結個多線程問題總結有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升開源的運行原理從虛擬機工作流程看運行原理。 自己實現集合框架 (三): 單鏈表的實現 自己實現集合框架 (三): 單鏈表的實現 基于 POI 封裝 ExcelUtil 精簡的 Excel 導入導出 由于 poi 本身只是針對于 ...

    caspar 評論0 收藏0
  • Java基礎知識整理之注解

    摘要:注解提供了一種安全的類似注釋的機制,用來將任何的信息或元數據與程序元素類方法成員變量等進行關聯。為程序的元素類方法成員變量加上更直觀更明了的說明,這些說明與程序的業務邏輯無關,并且提供給指定的工具或框架使用。 什么是注解? Annotation 是 Java5 之后開始引入的新特性,中文為注解。注解提供了一種安全的類似注釋的機制,用來將任何的信息或元數據(metadata)與程序元素(...

    blastz 評論0 收藏0
  • java

    摘要:多線程編程這篇文章分析了多線程的優缺點,如何創建多線程,分享了線程安全和線程通信線程池等等一些知識。 中間件技術入門教程 中間件技術入門教程,本博客介紹了 ESB、MQ、JMS 的一些知識... SpringBoot 多數據源 SpringBoot 使用主從數據源 簡易的后臺管理權限設計 從零開始搭建自己權限管理框架 Docker 多步構建更小的 Java 鏡像 Docker Jav...

    honhon 評論0 收藏0
  • Java識點總結注解-自定義注解

    摘要:我們定義注解元素時,經常使用空字符串作為默認值。也經常使用負數比如表示不存在的含義示例既可以修飾方法,也可以修飾類運行時使用關鍵字定義注解成員以無參無異常方式聲明。方法的名稱就是參數的名稱可以使用為成員指定一個默認值浙江大學清華大學張三 Java知識點總結(注解-自定義注解) @(Java知識點總結)[Java, 注解] 使用@interface自定義注解時,自動繼承了java.lan...

    zhouzhou 評論0 收藏0
  • Java識點總結注解-元注解

    摘要:知識點總結注解元注解知識點總結注解元注解的作用就是負責注解其他注解。 Java知識點總結(注解-元注解 ) @(Java知識點總結)[Java, 注解] 元注解的作用就是負責注解其他注解。 Java5.0定義的元注解: @Target @Retention @Documented @Inherited @Target 用于描述注解的使用范圍 @Target(value=Elemen...

    tylin 評論0 收藏0

發表評論

0條評論

awkj

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<