小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Java Bean

 ha_rdly 2016-08-20

       JAVABEAN是一個遵循特定寫法的java類,它通常具有如下特點:

        1.這個java類必須具有一個無參構造函數(shù)

        2.屬性必須私有化

        3.私有化的屬性必須通過public類型的方法暴露給其他程序,并且方法的命名也必須遵守一定的命名規(guī)范

JAVABEAN屬性:

   

一、定義:

     把一個擁有對屬性進行set和get方法的類,我們就可以稱之為JavaBean。實際上JavaBean就是一個java類,在這個java類中就默認形成了一種規(guī)則——對屬性進行設置和獲得。而反之將說ava類就是一個JavaBean,這種說法是錯誤的,因為一個java類中不一定有對屬性的設置和獲得的方法(也就是不一定有set和get方法)。

二、從JavaBean中就引出了一個內省的概念

     內?。喊岩活愔行枰M行設置和獲得的屬性訪問權限設置為private(私有的)讓外部的使用者看不見摸不著,而通過public(共有的)set和get方法來對其屬性的值來進行設置和獲得,而內部的操作具體是怎樣的?外界使用的人不用不知道,這就稱為內省。

三,這里有一個面試題,分享一下

        存在一個JavaBean,它包含以下幾種可能的屬性:

           1:boolean/Boolean

         2:int/Integer

         3:String

         4:double/Double

         屬性名未知,現(xiàn)在要給這些屬性設置默認值,以下是要求的默認值:

          String類型的默認值為字符串 www.itheima.com

         int/Integer類型的默認值為100

         boolean/Boolean類型的默認值為true

         double/Double的默認值為0.01D.

只需要設置帶有getXxx/isXxx/setXxx方法的屬性,非JavaBean屬性不設置,請用代碼實現(xiàn)

/*

設計思路:

        設計一個模擬題目要求的JavaBean類,通過反射進行對其中的未知屬性名的變量賦值。

        1,拿到字節(jié)碼文件,建立一個空構造函數(shù)的實例對象。

        2,利用字節(jié)碼作為參數(shù),Introspector.getBeanInfo(JavaBean.class)得到BeanInfo實例對象。

        3,通過BeanInfo的方法,beanInfo.getPropertyDescriptors()拿到該字節(jié)碼的所有屬性描述。

        3,通過PropertyDescriptor--屬性描述實例對象,通過調用getWriteMethod()方法,修改字節(jié)碼中屬性的值。

        4,在通過屬性描述中getPropertyType()方法,定位是那種類型的成員變量,篩選出后,進行相應的修改賦值。

        */

這里是源碼分享一下

    package com.itheima;

import java.beans.BeanInfo;

import java.beans.Introspector;

import java.beans.PropertyDescriptor;

import java.lang.reflect.Method;

/*       

* 5、 存在一個JavaBean,它包含以下幾種可能的屬性:

1:boolean/Boolean

2:int/Integer

3:String

4:double/Double

屬性名未知,現(xiàn)在要給這些屬性設置默認值,以下是要求的默認值:

String類型的默認值為字符串 www.itheima.com

int/Integer類型的默認值為100

boolean/Boolean類型的默認值為true

double/Double的默認值為0.01D.

只需要設置帶有getXxx/isXxx/setXxx方法的屬性,非JavaBean屬性不設置,請用代碼實現(xiàn)

*/

/*

* 設計思路:

        設計一個模擬題目要求的JavaBean類,通過反射進行對其中的未知屬性名的變量賦值。

        1,拿到字節(jié)碼文件,建立一個空構造函數(shù)的實例對象。

        2,利用字節(jié)碼作為參數(shù),Introspector.getBeanInfo(JavaBean.class)得到BeanInfo實例對象。

        3,通過BeanInfo的方法,beanInfo.getPropertyDescriptors()拿到該字節(jié)碼的所有屬性描述。

        3,通過PropertyDescriptor--屬性描述實例對象,通過調用getWriteMethod()方法,修改字節(jié)碼中屬性的值。

        4,在通過屬性描述中getPropertyType()方法,定位是那種類型的成員變量,篩選出后,進行相應的修改賦值。

        */

       

//建立模擬JavaBean類

class JavaBean{

        //成員變量

        private boolean flag;

        private int number;

        private String itcast;

        private double money;

       

        //成員變量相應的set和get方法

        public void setItcast(String newitcast){

                itcast=newitcast;

        }

        public String getItcast(){

                return itcast;

        }

       

        public void setNumber(int newnumber){

                number=newnumber;

        }

        public int getNumber(){

                return number;

        }

       

        public void setFlag(boolean newflag){

                flag=newflag;

        }

        public boolean getFlag(){

                return flag;

        }

       

        public void setMoney(double newmoney){

                money=newmoney;

        }

        public double getMoney(){

                return money;

        }

}

public class HeiMa{

        public static void main(String[] args) throws Exception {

                     //拿到字節(jié)碼

                        Class<JavaBean> clazz=JavaBean.class;

                     //拿到字節(jié)碼的一個對象實例

                        Object obj=clazz.newInstance();

                     //通過字節(jié)碼拿到BeanInfo實例對象

                        BeanInfo beanInfo=Introspector.getBeanInfo(clazz);

                     //通過BeanInfo拿到這個字節(jié)碼的所有屬性描述

                        PropertyDescriptor[] pds=beanInfo.getPropertyDescriptors();

                    //通過屬性描述對象拿到屬性對應的set方法和get方法,通過set方法進行屬性賦值

                        for(PropertyDescriptor pd:pds){

                     //拿到當前屬性的set方法

                         Method setMethod=pd.getWriteMethod();

                     Method getMethod=pd.getReadMethod();

                               

                     //拿到當前屬性的類型字節(jié)碼

                        Class<?> properclass=pd.getPropertyType();

                    //通過字節(jié)碼來篩選出相應的屬性,再對應賦值,賦值完畢后,通過打印get方法查看賦值情況。

                        if(properclass==String.class){

                     setMethod.invoke(obj, "www.itheima.com");

                     System.out.println(getMethod.invoke(obj));

                     }else if(properclass==int.class || properclass==Integer.class){

                   setMethod.invoke(obj, 100);

                   System.out.println(getMethod.invoke(obj));

                    }else if(properclass==Boolean.class || properclass==boolean.class){

                   setMethod.invoke(obj, true);

                  System.out.println(getMethod.invoke(obj));

                  }else if(properclass==Double.class || properclass==double.class){

                  setMethod.invoke(obj, 0.01D);

                  System.out.println(getMethod.invoke(obj));

                                }

                               

                        }                         

              }          

        }

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多