日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java反射和注解

發(fā)布時間:2025/5/22 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java反射和注解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • 反射
  • 注解
    • 元屬性
    • 自定義注解
    • 使用案例

反射

Class<?> aClass = Class.forName("reflect.Student"); Constructor<?> constructor = aClass.getConstructor();//構(gòu)造函數(shù),用于創(chuàng)建對象 Object obj = constructor.newInstance(); //創(chuàng)建對象,用于執(zhí)行函數(shù)Method[] methods = aClass.getMethods();//獲取方法 for (Method method : methods) {System.out.println(method); } Method out = aClass.getMethod("out");//獲取指定方法 out.invoke(obj);//執(zhí)行方法Field[] fields = aClass.getDeclaredFields();//獲取所有屬性(包括private) for (Field field : fields) {System.out.println(field.getName()); } fields[0].setAccessible(true); //給屬性解鎖 fields[0] private name; fields[0].set(obj, "小明"); //給屬性賦值 System.out.println(obj);//獲取注解 Class<BookStore> bookStoreClass = BookStore.class; Method buyBook = bookStoreClass.getMethod("buyBook"); //判斷是否有注解,如果用buyBook則獲取的是類上的注解 if (bookStoreClass.isAnnotationPresent(Book.class)) {Book annotation = bookStoreClass.getAnnotation(Book.class);//輸出注解System.out.println(annotation.value());System.out.println(Arrays.toString(annotation.authors())); }

注解

元屬性

@Target ElemenetType: TYPE:用在類,接口上 FIELD:用在成員變量上 METHOD用在方法上 PARAMETER:用在參數(shù)上 CONSTRUCTOR:用在構(gòu)造方法上 LOCAL_VARIABLE:用在局部變量上@Retention RetentionPolicy: SOURCE:注解只存在于Java源代碼中,編譯生成的字節(jié)碼文件中就不存在了。 CLASS:注解存在于Java源代碼、編譯以后的字節(jié)碼文件中,運(yùn)行的時候內(nèi)存中沒有,默認(rèn)值。 RUNTIME:注解存在于Java源代碼中、編譯以后的字節(jié)碼文件中、運(yùn)行時內(nèi)存中,程序可以通過反射獲取該注解。

自定義注解

@Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface Book {// 當(dāng)注解中只有一個屬性且名稱是value,在使用注解時給value屬性賦值可以直接給屬性值//書名String value();//價格double price() default 100;//作者String[] authors(); }

使用案例

@Book(value = "紅樓夢",authors = "曹雪芹",price = 998) public class BookStore {@Book(value = "西游記",authors = {"吳承恩"})public void buyBook(){} }

轉(zhuǎn)載于:https://www.cnblogs.com/birdofparadise/p/9769293.html

總結(jié)

以上是生活随笔為你收集整理的java反射和注解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。