java高級-泛型<T>和註解封裝與使用
阿新 • • 發佈:2018-09-22
bat string 為什麽 cor this 模塊名 vat () parameter
一、java泛型
其實就是約束我們的集合和接口和類
為什麽要泛型:規範我數據的操作和類型,它常用語一些接口和父子關系中(繼承)
泛型能很好體現java的繼承,封裝這兩個特點
用途:泛型、反射---->做項目,搭框架-》模仿和揣測
ssh ssi 散列的數據結構 Vector<E>
//comparator comparable 排序 //Integer Long Float Double Character Boolean Byte ArrayList<類> list = new ArrayList<類>(); list.add("x"); //Spring -->面向接口編程-->以接口為導向-->延伸出很多規範和子類---比如:數據庫業務的增刪改查 //註解、反射、設計模式(編程思想)、線程池(jvm) //方法註解、類註解、屬性註解===低耦合==就是為了拿到類本身 //日誌統計:我要統計出你的請求是來自哪個類,哪個方法,並且執行了多長時間,以及他們的模塊名稱是什麽。//id name class_name user_name create_name description model update_time user_id
二、註解封裝與使用
註解+Aop
註解+Filter
①封裝
package com.steven.demo; import java.lang.annotation.Documented; import java.lang.annotation.ElementType;import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /* 黑認情況下一個自定義的 Annotation可以在任意地方使用,如自定義的 MyAnnotatlon,如果沒有指定 Target,則可以在任意地方使用 1、只能在 Annotation中出現: ANNOTATION_TYPE 2、只能在構造方法中出現: CONSTRUCTOR 3、在屬性中出現: FIELD 4、只能在本地變量中出現: LOCAL_VARIIABLE 5、在方法上出現: METHOD 6、在包聲明中出現: PACKAGE 7、在參數聲明中出現: PARAMETER 8、類、接口(包括註釋類型)或枚舉聲明中使用:TYPE @Documented 在java.1ang, annotation中定義的註解類型 Documented, 指示某一類型的註釋將通過 javadoc和類似的默認工具進行文檔化。應使用此類型來註釋這些英型的聲明 其註釋會影響由其客戶端註釋的元素的使用。如果類型聲明是用 Documented來註釋的,則其註釋將成為註釋元素的公共API的一部分。 @Inherited 在java.1ang.annotation中聲明 Inherited,表示該 annotation是否被該子類斷承下去,如果沒有此註解,說明不能被斷承 如自定義的 MyAnnotatlon,加入@Inherited,說明此 Annotation可以被子類斷承 參考文檔:http://chenzehe.iteye.com/blog/14882844 */ @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface HKAnnotationClass { public String name() default ""; public String model() default ""; }
②使用
import java.util.Set; @HKAnnotationClass(model = "Login",name = "用戶登錄管理") //註解使用 public class Test {//實現代碼}
三、泛型的簡單使用-案例
package com.steven.demo; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Set; @HKAnnotationClass(model = "Login",name = "用戶登錄管理") //註解使用 public class Test { //?未知--List<String> //一句話:?接收子類的任意數據類型 //如果是單個問號的話:那麽就告訴你一定是他子類?根據子類裏面的泛型去決定的 public static void displayName(Collection<?> collection) { if (collection==null) { return; } for (Object object : collection) { System.out.println(object ); } } //縮小範圍,限制在子類 /* public static void displayName(Collection<? extends Animal> collection) { if (collection==null) { return; } for (Animal animal : collection) { System.out.println(animal.toString() ); } } */ public static Animal getCat(Animal[] animals,String name) { Animal animal2 = null; if (animals!=null) { for (Animal animal : animals) { if (animal.name.equals(name)) { animal2 = animal; break; } } } return animal2; } public static void main(String[] args) { ArrayList<String> strings = new ArrayList<String>();//指定數組裏的元素 strings.add("1111"); strings.add("2222"); displayName(strings); //1111 //2222 System.out.println("======================"); ArrayList<Integer> integers = new ArrayList<Integer>(); integers.add(1111); integers.add(2222); displayName(integers); System.out.println("======================"); ArrayList<Float> floats = new ArrayList<Float>(); //List Set 的頂級類 Collection Set<String> sets = new HashSet<String>(); sets.add("1111"); sets.add("2222"); displayName(sets);//封裝、繼承、多態 //====================================== Animal cat = new Cat("小貓", "喵喵喵"); System.out.println(cat.toString()); Animal pig = new Cat("小豬", "呼呼呼"); System.out.println(pig.toString()); //動物的名字是小貓他能:喵喵喵 //動物的名字是小豬他能:呼呼呼 ArrayList<Cat> cats = new ArrayList<Cat>(); cats.add((Cat) cat); cats.add((Cat) pig); for (Cat cat2: cats) { System.out.println("=="+cat2); } displayName(cats); Animal[] animals = {new Cat("小貓1", "喵喵喵"),new Cat("小貓2", "喵喵喵"),new Cat("小貓3", "喵喵喵")}; Animal animal = getCat(animals, "小貓3"); System.out.println(animal.toString()); } }
Animal類
package com.steven.demo; public class Animal { public String name; public Animal() { } public Animal(String name) { this.name = name; } public String toString() { return "動物的名字是"+name; } }
Cat類
package com.steven.demo; public class Cat extends Animal { private String sound; public Cat(String name, String sound) { super(name); this.sound = sound; } public String toString() { return super.toString() + "他能:"+sound; } }
四、java T 的使用
//泛型T 表示通用 <T extends Animal>
//我們的泛型是用來實現父子關系的一個範圍的固定
/* public <T> List<T> arrayToList { return null } */ public static <T extends Animal> T getAnimal(T[] animals,String name) { T animal2 = null; if (animals!=null) { for (T animal : animals) { if (animal.name.equals(name)) { animal2 = animal; break; } } } return animal2; } //springmvc //+hibenate 增刪改 //+jdbcteamkplte/myibats 查詢
java高級-泛型<T>和註解封裝與使用