黑馬程式設計師--java高新技術 25--列舉,反射
---------------------- ASP.Net+Android+IO開發S、.Net培訓、期待與您交流! ----------------------
/*1.5 新特性總結: 靜態匯入 可變引數 增強for(foreach) 基本資料的自動拆裝箱 列舉 泛型 */ /*25-2 API: Application Programming Interface java EE IDE: Integrated development environment jms jmx jndi */ /*25-3 preference--java--compiler //javac 編譯器版本 |--Installed JREs //java 執行的版本 |--general--keys //快捷鍵 file--switch workspace //切換工作間 */ /*25-4 debug 透檢視下: r變數--watch */ /*25-5 r--run as--run configuration--jre //執行環境 低版本的java不能執行高版本的javac編譯的程式,會出現 UnsupportedClassVersionError r(一個工程)--properties--run/debug setting--edit--(edit configuration) //該路徑也可開啟執行環境 */ /*25-6 模板程式碼: properties--java--editer-templates */ /*25-7 jar Libaray 更改jre庫,Libaray 就是很多的jar r工程--build path--configure build path--java build path */ /*25-8 1.5 新特性 靜態匯入 */ /*25-9 1.5 新特性 可變引數 overload vs override */ /*25-10 1.5 新特性 增強for */ /*25-11 1.5 新特性 基本資料的自動拆裝箱 享元設計模式flyweight: 有很多個小的物件,它們有很多屬性相同,把它們變成一個物件, 那些不同的屬性變成方法的引數,稱之為外部狀態,那些相同的屬性稱之為內部狀態。 */ /*25-12 1.5 新特性 列舉 */ /*25-14 列舉的基本應用: name(); ordinal();//類似陣列的角標 valueOf("SUN").toString(); values(); 把列舉變成陣列 */ /*25-17 Class cls = 位元組碼; 獲得位元組碼的三種方式: System.class; new Date().getClass(); Class.forName("java.util.Date");//全名 預定義的實力物件://參照isPrimitive(); void.class; int.class = Integer.Type;//還有其他的7種基本資料型別。 isArray();//是否是陣列。 */ /*25-19 反射會導致程式的效能下降 */ /*25-20 getField(pt1); getDeclaredField(pt1); setAccessible(true);//暴力反射 */ /*25-22 誰有資料誰就是幹這個事的專家,方法就分配給誰。 */ /*25-23 用反射呼叫 main 方法的原因是可以在沒有載入 類的前提下用 class.forName(name); 方法來載入類, 之後就可以執行main 方法了。 r--run as--run configuration--arguments //用於給程式傳遞引數。 */ /*25-24 getSuperclass(); 可變引數:若滿足1.4 的條件就按照1.4的處理,不滿足就按照1.5的處理。 */ /*25-26 存入HashSet 集合的元素(物件) 的 資料發生改變時,其hashcode 的值也會發生改變,因此在使用時應該注意其HashCode 值 是否有發生改變。否則會發生記憶體洩露。 */ /*25-27 反射的作用: 實現框架 */ /*25-28 getClass().getResourceAsStream(); //無法通過類載入器寫入資料 */ /*25-29 內省:introspector javaBean: 以set 或 get 開頭 的方法 的類 */ //個人疑問:?1, ?2, ?3, ?4 import java.lang.reflect.Constructor; public class Demo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //WeekDay Class clazz = WeekDay.MON.getClass();//@0 用getClass()獲得的建構函式是一個 //?1: 為何是一個? 為何會少掉建構函式?少掉了哪些建構函式? Constructor[] cons = clazz.getDeclaredConstructors(); System.out.println("共有 "+cons.length+" 個建構函式"); for (Constructor con : cons) { System.out.println(con.toGenericString()); } Class clazz1 = WeekDay.class;//@1 與@0 相比 用 .class 的方法卻獲得3個。 //?2: 為何是3個 ,多出來的那個建構函式是什麼意思? ?3: 為何與@0 不同? Constructor[] cons1 = clazz1.getDeclaredConstructors(); System.out.println("共有 "+cons1.length+" 個建構函式"); for (Constructor con : cons1) { System.out.println(con.toGenericString()); } System.out.println(); //Weekday1 Class clazz2 = Weekday1.MON.getClass();//@2 與@0 相比 該方法enum 沒有 abstract 方法, 獲得的建構函式卻是2個 Constructor[] cons2 = clazz2.getDeclaredConstructors(); System.out.println("共有 "+cons2.length+" 個建構函式"); for (Constructor con : cons2) { System.out.println(con.toGenericString()); } Class clazz3 = Weekday1.class;//@3 比較WeekDay 和 Weekday1,WeekDay僅多了一個abstract方法。 //說明WeekDay 之所以會多出或少掉建構函式是因為 abstract 方法 //?4:為何WeekDay 和 Weekday1 會有這樣的差異?或者為何abstract方法會造成這樣的差異 Constructor[] cons3 = clazz3.getDeclaredConstructors(); System.out.println("共有 "+cons3.length+" 個建構函式"); for (Constructor con : cons3) { System.out.println(con.toGenericString()); } } } enum WeekDay{ SUN(){ public WeekDay nextDay(){ return MON; } },MON(){ public WeekDay nextDay(){ return SUN; } }; WeekDay(){ System.out.println("first"); } WeekDay(int x){ System.out.println("second"); } public abstract WeekDay nextDay(); } enum Weekday1{ SUN,MON; Weekday1(){ System.out.println("first"); } Weekday1(int x){ System.out.println("second"); } }
---------------------- ASP.Net+Android+IO開發S、.Net培訓、期待與您交流! ----------------------
相關推薦
黑馬程式設計師--java高新技術 25--列舉,反射
---------------------- ASP.Net+Android+IO開發S、.Net培訓、期待與您交流! ---------------------- /*1.5 新特性總結: 靜態匯入 可變引數 增強for(foreach) 基本資料的自動拆裝箱 列舉 泛
黑馬程式設計師——java高新技術:列舉
------- android培訓、java培訓、期待與您交流! ---------- 列舉是java1.5版本的新特性。 1,列舉是什麼? 就是讓某個型別的變數的取值只能為若干個固定值中的一個。可以讓編譯器在編譯時就可控制,避免出錯。 2.列舉的應用 (1)定義列舉使用
黑馬程式設計師——Java高新技術之列舉
-------android培訓、java培訓、期待與您交流! ---------- 列舉 列舉enum 列舉就是要讓某個型別的變數的取值,只能為若干個固定值中的一個,否則,編譯器報錯 列舉可以讓編譯器在編譯時就可以控制源程式中填寫的非法值,普通
黑馬程式設計師_java高新技術(1)列舉、反射、內省
------- android培訓、java培訓、期待與您交流! ---------- JDK 5.0 靜態匯入,自動裝箱拆箱,增強for迴圈, 可變引數,列舉,泛型,元資料 day01***Eclipse/列舉 *Workspace與project 會切換工作間與
黑馬程式設計師 Java高新技術---列舉
---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ---------------------- 列舉概念: 列舉實際上就是限制了一個類的物件產生範圍。 假如要定義一個Color類,用於上色,而顏
黑馬程式設計師--java高新技術 26--javaBean,泛型,類載入器,代理spring小框架
---------------------- ASP.Net+Android+IO開發S、.Net培訓、期待與您交流! ---------------------- /*設計模式: Singleton: 單例模式 Factorty: 工廠模式 Iterator: 迭代器模
黑馬程式設計師-java高新技術(反射)
一、反射 1、定義: Java程式中的各個Java類屬於統一類事物,描述這類事物的Java類名就是Class。反射機制指的是程式在執行時能夠獲取自身的資訊。在java中,只要給定類的名字,那麼就可以通過反射機制來獲得類的所有資訊。 2、優點和缺
黑馬程式設計師--java基礎--String,StringBuffer,StringBuilde
------- android培訓、java培訓、期待與您交流! --------- String的兩種例項化方式: 方式1: String s1 = "abc"; //s1是一個類型別變數,"abc"是一個物件 //字串最大的特點:String一旦初始化
黑馬程式設計師--java高新技術--javaBean內省
------- android培訓、java培訓、期待與您交流! --------- 內省(IntroSpector) 主要對JavaBean進行操作。 JavaBean: 特殊的java類。JavaBean的屬性是根據其中的get和set來確定的, gettime--&g
黑馬程式設計師——Java高新技術_反射
反射技術: 其實就是動態載入一個指定的類,並獲取該類中的所有的內容。而且將位元組碼檔案封裝成物件,並將位元組碼檔案中的內容都封裝成物件,這樣便於操作這些成員。簡單說:反射技術可以對一個類進行解剖。 反射的好處:大大的增強了程式的擴充套件性。 反射的基本步驟: 1、獲得Class物件,就是獲取到指定的名稱的位
黑馬程式設計師_java高新技術(2)列舉
列舉是一種特殊的JAVA類,用來定義有限的數量級 public enum TrafficSignal(){ STOP,CAUTION,GO } 每一個類都是其所在列舉的子類 使用方法 類名.常量名 當使用列舉常量時,JVM會自動建立該常量的例項 TrafficSignal signal=Traffic
黑馬程式設計師——Java高新技術之反射學習總結一
反射學習總結 基礎補充: Java程式中的各個Java類屬於同一類事務,描述這類事務的Java類名就是C
黑馬程式設計師_java高新技術之列舉
---------------------- ASP.Net+Unity開發、.Net培訓、期待與您交流! ---------------------- 列舉: 關鍵字 enum 列舉就是要讓某個型別的變數的取值只能為若干固定值之中的一個。 是一個特殊的類,其中的每一個元素都是該類的一個物件。 注
黑馬程式設計師 Java高新技術--反射和內省
1.框架與框架要解決的核心問題:比如:我做房子賣給使用者住,由使用者自己安裝門窗和空調,我做的房子就是框架,使用者需要使用我的框架,把門窗插入進我提供的框架中。框架和工具類有區別,工具類被使用者的類呼叫,而框架則是呼叫使用者提供的類。2.框架要解決的核心問題:我在寫框架(房子)時,你這個使用者可能還在上小學,
黑馬程式設計師 java高新技術 反射
---------- android培訓、java培訓、期待與您交流! ---------- 一、Class類 Class是Java程式中各個Java類的總稱;它是反射的基石,通過Class類來使用反射。 物件的建立和使用: 建立例項物件:
黑馬程式設計師--java高新技術----反射
---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ---------------------- 什麼是反射? 反射就是把一個類中的各種元素對映成一個類。 得到一個類中的元素都是從這個
黑馬程式設計師——Java高新技術之反射
-------android培訓、java培訓、期待與您交流! ---------- 反射 JAVA反射機制是在執行狀態中,對於任意一個類 (class檔案),都能夠知道這個類的所有屬性和方法; 對於任意一個物件,都能夠呼叫它的任意一個方法和屬性
黑馬程式設計師--java基礎--多型,內部類,異常等
------- android培訓、java培訓、期待與您交流! --------- 多型: 允許不同類的物件對同一訊息作出響應 1.多型的體現 父類的引用指向自己的子類物件 父類的引用也可以接受自己的子類物件 2.多型的前提 類和類之間有關係。繼承。實現。 存在覆蓋。
黑馬程式設計師—JAVA高新技術之反射
反射 一、反射的基石 反射的基石是Class類。Java程式中的各個java類屬於同一類事物,描述這類事物的java類名就是Class. 1.1 Class類的分析 在程式執行時呼叫類的時候,首先將這個類在硬碟上的二進位制程式碼載入到記憶體中,才可以用這個類建立物件
黑馬程式設計師——java-幾個常用的類(Object,Scanner,String,StringBuffer/StringBuilder)
1 Object類 Object類層次結構的根類,所有的類都直接或間接的繼承自該類 Object類中常用的方法 public String toString()---//返回該物件的字串表示 public final Class getCla