java從入門到放棄(10)

泛型

import org。junit。Test;import java。util。*;/** * 泛型的型別必須是類,不能是基本資料型別 * 如果例項化時,沒有指明泛型的型別,預設型別為Object型別 * 靜態方法不能使用泛型 * 異常類不能宣告為泛型類 */public class GenericTest { public void test2(){ Map map = new HashMap(); map。put(“aa”,11); map。put(“cc”,22); map。put(“dd”,33); Set> set = map。entrySet(); Iterator> iterator = set。iterator(); while(iterator。hasNext()){ Map。Entry entry = iterator。next(); String key = entry。getKey(); Integer value = entry。getValue(); } } @Test public void test1(){ ArrayList list = new ArrayList<>(); list。add(78); list。add(78); list。add(78); list。add(78); //編譯時就會進行型別檢查,保證資料的安全 //list。add(“aaa”); for(Integer score : list){ //避免強轉操作 int stuScore = score; System。out。println(stuScore); } Iterator iterator = list。iterator(); while (iterator。hasNext()){ Integer score = iterator。next(); System。out。println(score); } }}

import java。util。ArrayList;import java。util。List;public class Order { String orderName; int orderId; //類的內部結構就可以使用類的泛型 T orderT; public Order(){}; public Order(String orderName,int orderId,T orderT){ this。orderName = orderName; this。orderId = orderId; this。orderT = orderT; } public T getOrderT(){ return orderT; } //泛型方法:在方法中出現了泛型的結構,泛型引數與類的泛型引數沒有任何關係 public List copyFromArrayToList(E[] arr){ ArrayList list = new ArrayList<>(); for(E e : arr){ list。add(e); } return list; }}

萬用字元

import java。util。ArrayList;import java。util。Iterator;import java。util。List;public class GenericTest2 { /* 泛型在繼承方面的體現 */ public void test1(){ Object obj = null; String str = null; obj = str; Object[] arr1 = null; String[] arr2 = null; arr1 = arr2; List list1 = null; List list2 = null; //此時list1和list2的型別不具有子父類關係 //list1 = list2; } public void test2(){ List list1 = null; ArrayList list2 = null; list1 = list2; } /* 萬用字元的使用 類A是類B的父類,G和G是並列關係,G<?>是他們共同的父類 */ public void test3(){ List list1 = null; List list2 = null; List<?> list = null; list = list1; list = list2; List list3 = new ArrayList<>(); list3。add(“AA”); list = list3; //新增:對於List<?>就不餓能向其內部新增資料 //list。add(“dd”); //除了新增null之外 list。add(null); //讀取 Object o = list。get(0); } public void print(List<?> list){ Iterator<?> iterator = list。iterator(); while(iterator。hasNext()){ Object obj = iterator。next(); System。out。println(obj); } } /* 有限制條件的萬用字元的使用 ? extends A: G<? extends A> 可以作為G和G的父類的,其中B是A的子類 ? super A: G<? super A> 可以作為G和G的父類的,其中B是A的子類 */ public void test4(){ List<? extends Person> list1 = null; List<? super Person> list2 = null; List list3 = new ArrayList(); List list4 = new ArrayList(); List list5 = new ArrayList(); list1 = list3; list1 = list4; //list1 = list5; //list2 = list3; list2 = list4; list2 = list5; //讀取資料: list1 = list3; Person p = list1。get(0); list2 = list4; Object object = list2。get(0); //寫入資料 // list1。add(new Student()); list2。add(new Person()); list2。add(new Student()); }}

File類的使用

import org。junit。Test;import java。io。File;/*** * File類的一個物件,代表一個檔案或一個檔案目錄 * * * */public class FileTest { /* 1。如何建立File類的例項 File(String filePath) 2。 相對路徑:相較於某個路徑下,指明的路徑 絕對路徑:包含碟符在內的檔案或檔案目錄的路徑 */ @Test public void test1(){ //構造器1 File file1 = new File(“hello。txt”);//相對於當前module System。out。println(file1); //構造器2 File file2 = new File(“C:\\Program Files (x86)”,“java。txt”); System。out。println(file2); //構造器3 File file3 = new File(file2,“hi。txt”); System。out。println(file3); } /*  File類的獲取功能 public String getAbsolutePath():獲取絕對路徑 public String getPath() :獲取路徑 public String getName() :獲取名稱 public String getParent():獲取上層檔案目錄路徑。若無,返回null public long length() :獲取檔案長度(即:位元組數)。不能獲取目錄的長度。 public long lastModified() :獲取最後一次的修改時間,毫秒值 public String[] list() :獲取指定目錄下的所有檔案或者檔案目錄的名稱陣列 public File[] listFiles() :獲取指定目錄下的所有檔案或者檔案目錄的File陣列 File類的重新命名功能 public boolean renameTo(File dest):把檔案重新命名為指定的檔案路徑 */ public void test2(){ File file1 = new File(“hello。txt”); File file2 = new File(“d:\\io\\hi。txt”); System。out。println(file1。getAbsolutePath()); System。out。println(file1。getPath()); System。out。println(file1。getName()); System。out。println(file1。getParent()); System。out。println(file1。length()); System。out。println(file1。lastModified()); } public void test3(){ File file = new File(“d:\\io\\hi。txt”); String[] list = file。list(); for(String s : list){ System。out。println(s); } File[] files = file。listFiles(); for(File f : files){ System。out。println(f); } } public void test4(){ File file = new File(“hello。txt”); File file1 = new File(“d:\\io\\hi。txt”); boolean renameTo = file。renameTo(file1); System。out。println(renameTo); } /*  File類的判斷功能 public boolean isDirectory():判斷是否是檔案目錄 public boolean isFile() :判斷是否是檔案 public boolean exists() :判斷是否存在 public boolean canRead() :判斷是否可讀 public boolean canWrite() :判斷是否可寫 public boolean isHidden() :判斷是否隱藏 */ /*  File類的建立功能 public boolean createNewFile() :建立檔案。若檔案存在,則不建立,返回false public boolean mkdir() :建立檔案目錄。如果此檔案目錄存在,就不建立了。如果此檔案目錄的上層目錄不存在,也不建立。 public boolean mkdirs() :建立檔案目錄。如果上層檔案目錄不存在,一併建立注意事項:如果你建立檔案或者檔案目錄沒有寫碟符路徑,那麼,預設在專案路徑下。 File類的刪除功能 public boolean delete():刪除檔案或者資料夾刪除注意事項:Java中的刪除不走回收站。要刪除一個檔案目錄,請注意該檔案目錄內不能包含檔案或者檔案目錄 */

  • 顶部