黑馬程式設計師--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高新技術---反射程式設計師Java反射
- 黑馬程式設計師_Java高新技術之列舉程式設計師Java
- 黑馬程式設計師Java培訓和Android培訓_java高新技術(一)程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:列舉程式設計師JavaAndroid
- 黑馬程式設計師——Java學習筆記之⑧——“Java新技術”程式設計師Java筆記
- 黑馬程式設計師-Java概述程式設計師Java
- 黑馬程式設計師Java培訓和Android培訓Java技術二程式設計師JavaAndroid
- 黑馬程式設計師程式設計師
- 【黑馬程式設計師濟南中心】java基礎-陣列程式設計師Java陣列
- 好程式設計師Java培訓分享Java之反射技術程式設計師Java反射
- 黑馬程式設計師java筆記之一-----Map集合程式設計師Java筆記
- 黑馬程式設計師——Java學習筆記之⑦——“網路程式設計”程式設計師Java筆記
- 黑馬程式設計師前端學習之路程式設計師前端
- 黑馬程式設計師——型別轉換程式設計師型別
- 黑馬程式設計師Java培訓和Android培訓:程式設計基礎程式設計師JavaAndroid
- 黑馬程式設計師第七天程式設計師
- 好程式設計師Java培訓Java程式設計師必學技術程式設計師Java
- 黑馬程式設計師Java培訓和Android培訓:I/O程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓_IO(二)程式設計師JavaAndroid
- 重走JAVA程式設計之路(一)列舉Java程式設計
- Java外包程式設計師的技術出路Java程式設計師
- 程式設計師的燈下黑:重知識輕技術程式設計師
- 黑馬程式設計師Java培訓和Android培訓:培訓前奏程式設計師JavaAndroid
- 黑馬程式設計師Java培訓和Android培訓:物件導向程式設計師JavaAndroid物件
- 黑馬程式設計師Java培訓和Android培訓:內部類程式設計師JavaAndroid
- 黑馬程式設計師_畢向東JAVA基礎_設計模式&異常處理機制程式設計師Java設計模式
- Java程式設計師都需要懂的「反射」Java程式設計師反射
- 黑馬程式設計師Java培訓和Android培訓:多執行緒程式設計師JavaAndroid執行緒
- Java列舉類、註解和反射Java反射
- Java程式設計師必讀:最新流行的Java開發程式設計技術Java程式設計師
- 【黑馬程式設計師濟南中心】代理模式-Cglib代理程式設計師模式CGLib
- 黑馬程式設計師面試題一(交通燈管理系統)程式設計師面試題
- 黑馬程式設計師---學習筆記3:進位制程式設計師筆記
- 黑馬程式設計師—一張帖看完黑馬所有學科、班級就業薪資貼程式設計師就業
- java反射技術Java反射
- 列舉幾個Java程式設計師通用的、必須掌握的框架Java程式設計師框架
- Java程式設計師都要懂得知識點:反射Java程式設計師反射
- 黑馬程式設計師_ios基礎總結1_IOS概述程式設計師iOS