一、類加載器1.什么是類加載器,作用是什么?類加載器就加載字節(jié)碼文件(.class) 2.類加載器的種類類加載器有三種,不同類加載器加載不同的 1)BootStrap:引導類加載器:加載都是最基礎的文件 2)ExtClassLoader:擴展類加載器:加載都是基礎的文件 3)AppClassLoader:應用類加載器:三方jar包和自己編寫java文件
怎么獲得類加載器?(重點) ClassLoader 字節(jié)碼對象.getClassLoader(); package cn.qlq; public class Demo { public static void main(String[] args) { //獲得Demo字節(jié)碼文件的類加載器 Class clazz = Demo.class;//獲得Demo的字節(jié)碼對象 ClassLoader classLoader = clazz.getClassLoader();//獲得類加載器 //getResource的參數路徑相對classes(src) //獲得classes(src)下的任何的資源 String path = classLoader.getResource("cn/qlq/jdbc.properties").getPath(); //classLoader.getResourceAsStream(""); System.out.println(path); } }
二、注解 @xxx注解在目前而言最主流的應用:代替配置文件 關于配置文件與注解開發(fā)的優(yōu)缺點: 注解優(yōu)點:開發(fā)效率高 成本低 注解缺點:耦合性大 并且不利于后期維護 1.jdk5提供的注解@Override:告知編譯器此方法是覆蓋父類的 @Deprecated:標注過時 @SuppressWarnings:壓制警告
發(fā)現的問題: 不同的注解只能在不同的位置使用(方法上、字段上、類上)
2.自定義注解: 1.注解是給機器看的,注釋是給程序員看的,這是兩者的區(qū)別?,F在各大框架都在使用注解,而我們程序員需要做的就是知道如何使用注解,而對其底層原理卻不清楚,今天看了一段視頻,現在淺談一下注解的使用。 2.注解的使用: 大體分為三部分: 定義注解、使用注解、解析注解。在框架中定義與解析框架都已經為我們做好了。 (1)定義注解:定義一個簡單的注解:
1 import java.lang.annotation.ElementType; 2 import java.lang.annotation.Retention; 3 import java.lang.annotation.RetentionPolicy; 4 import java.lang.annotation.Target; 5 6 7 @Target(ElementType.METHOD) 8 @Retention(RetentionPolicy.RUNTIME) 9 public @interface MyAnnotation { 10 //定義注解的屬性,這不是方法 11 String name();//必選注解 12 int value() default 20;//有屬性就是可選屬性 13 } 做一個解釋吧:定義前面的@Target,與@Retention又稱為元注解,限制定義的注解的特性: @Target定義注解使用的位置,值有:看名字一般就很明顯了吧 @Retention:限定注解的可見范圍:值有 一個圖解釋上面的可見范圍: (2)注解的使用: 1 package annotation; 2 3 public class UseMyAnnotion { 4 5 // 這里只用一個屬性,另一個value屬性有默認值不用設置 6 @MyAnnotation(name = "QizoZhi") 7 public void show(String str){ 8 System.out.println(str); 9 } 10 }
(3)解析注解:這里使用了底層的映射原理
1 package annotation; 2 3 import java.lang.reflect.InvocationTargetException; 4 import java.lang.reflect.Method; 5 6 public class MyAnnotationParser { 7 8 public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { 9 // 獲取字節(jié)碼對象 10 Class clazz = UseMyAnnotion.class; 11 Method method = clazz.getMethod("show", String.class); 12 // 獲取方法上面的注解 13 MyAnnotation annotation = method.getAnnotation(MyAnnotation.class); 14 // 獲取注解屬性值 15 System.out.println(annotation.name()+"\t"+annotation.value()); 16 17 // 取到值就可以根據業(yè)務處理數據 18 19 //激活方法,也就是讓方法執(zhí)行 20 method.invoke(new UseMyAnnotion(), "HH"); 21 } 22 }
到這里注解基本上就完了,我們需要了解底層實現原理,真正開發(fā)的時候定義注解以及解析注解一般不用我們寫,我們只需要學會使用框架提供的注解,但是使用注解的開發(fā)也有缺點。對后期的維護增加了困難。
Java注解之Retention、Documented、Target介紹參考:https://www.cnblogs.com/qlqwjy/p/8516551.html
【小主,覺得有用的話點擊右邊的打賞打賞點哦!多多少少沒關系,一分也是對我的支持和鼓勵。謝謝!】
|
|
|