天天看點

黑馬程式員----JavaBean、内省 和 注釋

---------------------- ASP.Net+Unity開發、 .Net教育訓練、期待與您交流! ----------------------

一、JavaBean

       JavaBean是一種特殊的Java類,主要用于傳遞資料資訊,這種java類中的方法主要用于通路私有的字段,且方法名符合某種命名規則。

       如果要在兩個子產品之間傳遞多個資訊,可以将這些資訊封裝到一個JavaBean中,這種JavaBean的執行個體對象通常稱之為值對象(Value Object,簡稱VO)。這些資訊在類中用私有字段來存儲,如果讀取或設定這些字段的值,則需要通過一些相應的方法來通路。   

       JavaBean的屬性是根據其中的setter和getter方法來确定的,而不是根據其中的成員變量。

使用JavaBean的優點:

1、JavaEE工程開發,需要使用。

2、JDK中提供了對JavaBean進行操作的一些API,這套API就稱為内省。用内省這套api操作JavaBean比用普通類的方式更友善。

二、内省

用于對javaBean進行操作,javaBean特殊的java類

1、用内省方式對javaBean的屬性進行set, get 操作

Person p = new Person("zhangsan",23);
PropertyDescriptor pd = new PropertyDescriptor("name",p.getClass());
Method methodGetName = p.getReadMethod();
Object retVal = methodGetName.invoke(p);

Method methodSetName = p.getWriteMethod();
Object retVal = methodGetName.invoke(p,"zhang");
           

2、使用BeanUtils工具包操作javaBean 

    需要導入BeanUtils包以及第三方jar包(log包)

    好處:(1)類型自動轉換,使用String

                (2)支援屬性的級聯 Data data = new Data();

                       data.time作為屬性來用

                (3)BeanUtils可以操作map

                        sop(BeanUtils.setProperty(p,"age"),"23");//參數為String

                        sop(BeanUtils.getProperty(p,"age"));

    PropertyUtils不進行類型轉換

三、注釋(Annotation)

        注解相當于一種标記,在程式中加了注解就等于為程式打上了某種标記。

        常用的三個:@Override  @Deprecated  @SuppressWarnings

注意:

        1、也叫中繼資料。相當于一種辨別

        2、作用分類

        (1)編寫文檔:通過代碼裡标示的中繼資料生成文檔(生成doc文檔)

        (2)代碼分析:通過中繼資料對代碼進行分析(使用反射)

        (3)編譯檢查:通過标示的中繼資料讓編譯器實作基本的編譯檢查(Override)

        3、使用位置

           包 類 成員變量 方法 局部變量

        4、注解相當于一種特殊的類

    @Override:           @Override就是用來指定方法覆寫的,它可以強制一個子類必須要覆寫父類的方法。如下程式使用@Override指定子類Apple的info方法必須重寫父類方法。     @Deprecated:          @Deprecated用于表示某個程式元素已過時,當其他程式使用已過時的類、方法時,編譯器将會給出警告。 如:

class A {
	//定義old方法已過時
	@Deprecated
	public void old(){
		System.out.println("過時方法...");
	}
}
public class Test{
	public static void main(String[] args){		
		//下面使用old方法将會被編譯器警告
		new A().old();
	}
}
           

     @SuppressWarnings           @SuppressWarnings訓示被Annotation辨別的程式元素取消顯示指定的編譯器警告。 例如,程式中使用沒有泛型限定的集合将會引起編譯器警告,為了避免這種編譯器警告,可以用@SuppressWarnings取消編譯器警告。

//關閉整個類裡的編譯器警告
@SuppressWarnings("unchecked")
public class Demo{
	public static void main(String[] args){
		List list = new ArrayList();
	}
}
           

注解的屬性:

<span style="font-size:18px;">@Retention(RetentionPolicy.RUNTIME)//元注解 ,三個階段
@Interface A{
	String color() default "red";
	Strng value();//value()屬性很特殊
	int[] arr() default {1,2,2};

}
@A(color="red",value="set",arr={1,2,3})//設定,如果隻有value屬性需要設定時,可以把=号省略@A("setValue")
class C{
	if(C.class.isAnnotationPresent(A.class)){
		A ann = (A)C.class.getAnnotation(A.class);  
		sop(ann.color());//使用
		sop(ann.value());//使用
		sop()
	}
}</span>
           

---------------------- ASP.Net+Unity開發、 .Net教育訓練、期待與您交流! ----------------------詳細請檢視: www.itheima.com