亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

重學JAVA基礎(二):Java反射

2019-11-14 23:33:26
字體:
來源:轉載
供稿:網友
重學java基礎(二):Java反射 看一下百度的解釋: JAVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息 以及動態調用對象的方法的功能稱為java語言的反射機制。 先看一下一個例子: 這是最簡單的反射使用方法,通過反射來調用類的方法。 下面通過一個需求來做反射實驗:有3種人類(黃,白,黑),分別繼承于Human類,都有人類的共同操作Behaviour
/** * 行為,區別于動物 * @author tomsnail * @date 2015年4月1日 上午10:10:42 */public interface Behaviour{    public void eat();    public void sleep();    public void think();    public void sport();    public void work();}
import java.util.Random;/** * 皮膚類型 * @author tomsnail * @date 2015年4月1日 上午11:41:33 */public enum SkinType{    yellow,white,black;        public static SkinType getSkinType(){                int r = new Random().nextInt(3);                switch(r){            case 0:return SkinType.yellow;            case 1:return SkinType.white;            default:return SkinType.black;        }    }}
public abstract class Human implements Behaviour{                PRivate String name;    private short age;    private short sex;    private SkinType skin;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public short getAge() {        return age;    }    public void setAge(short age) {        this.age = age;    }    public short getSex() {        return sex;    }    public void setSex(short sex) {        this.sex = sex;    }    public SkinType getSkin() {        return skin;    }    public void setSkin(SkinType skin) {        this.skin = skin;    }    /**     * 構造方法要傳皮膚顏色,以區分不同的人種     * @author tomsnail     * @date 2015年4月1日 上午10:06:48     */    public Human(SkinType skin) {        this.skin = skin;        this.name = skin.toString()+"_"+Goddess.counter++;    }}
public class WhiteHuman extends Human{    public WhiteHuman() {        super(SkinType.white);    }        public WhiteHuman(SkinType skinType) {        super(skinType);        System.err.println("我是白人,我在");    }    @Override    public void eat() {        System.err.println("我是白人,我在eat");    }    @Override    public void sleep() {        System.err.println("我是白人,我在sleep");    }    @Override    public void think() {        System.err.println("我是白人,我在think");    }    @Override    public void sport() {        System.err.println("我是白人,我在sport");    }    @Override    public void work() {        System.err.println("我是白人,我在work");    }    private void selfMethod(){        System.out.println("這是白人私有方法");    }}
public class YellowHuman extends Human{    public YellowHuman() {        super(SkinType.yellow);    }        public YellowHuman(SkinType skinType) {        super(skinType);        System.err.println("我是黃種人,我的皮膚顏色是:"+skinType);    }    @Override    public void eat() {        System.err.println("我是黃種人,我在eat");    }    @Override    public void sleep() {        System.err.println("我是黃種人,我在sleep");    }    @Override    public void think() {        System.err.println("我是黃種人,我在think");    }    @Override    public void sport() {        System.err.println("我是黃種人,我在sport");    }    @Override    public void work() {        System.err.println("我是黃種人,我在work");    }        private void selfMethod(){        System.out.println("這是黃種人私有方法");    }}
public class BlackHuman extends Human{            public BlackHuman() {        super(SkinType.black);    }        public BlackHuman(SkinType skinType) {        super(skinType);        System.err.println("我是黑人,我的皮膚顏色是:"+skinType);    }    @Override    public void eat() {        System.err.println("我是黑人,我在eat");    }    @Override    public void sleep() {        System.err.println("我是黑人,我在sleep");    }    @Override    public void think() {        System.err.println("我是黑人,我在think");    }    @Override    public void sport() {        System.err.println("我是黑人,我在sport");    }    @Override    public void work() {        System.err.println("我是黑人,我在work");    }        private void selfMethod(){        System.out.println("這是黑人私有方法");    }}
/** * 女媧 * @author tomsnail * @date 2015年4月1日 上午10:20:16 */public class Goddess {        public static int counter = 0;        private static final String[] humanClasss = new String[]{"com.tomsnail.java.test.reflec.BlackHuman","com.tomsnail.java.test.reflec.WhiteHuman","com.tomsnail.java.test.reflec.YellowHuman"};        //小伙伴    private List<Human> companions = new ArrayList<Human>();        private static final int number = 10;        /**     * 造人     * @author tomsnail     * @date 2015年4月1日 上午10:21:03     */    public void createHuman(){        int i=number;        while(--i>0){            String className = randomHuman();            try {                Class humanClass = Class.forName(className);                Human human = null;                if(System.currentTimeMillis()%i==1){                    System.out.println("發生意外,創造一個不知道什么的人");                    Constructor constructor = humanClass.getConstructor(SkinType.class);//構造方法                    human = (Human) constructor.newInstance(SkinType.getSkinType());//通過構造方法創建一個對象                }else{                    System.out.println("女媧創造一個 "+humanClass.getSimpleName());                    human = (Human) humanClass.newInstance();                }                companions.add(human);            }  catch (Exception e) {                e.printStackTrace();            }        }    }        private String randomHuman(){        int r = new Random().nextInt(3);        return humanClasss[r];    }    /**     * 生活     * @author tomsnail     * @date 2015年4月1日 上午10:27:09     */    public void life() throws Exception{        while(true){            try {                Thread.currentThread().sleep(1000);            } catch (InterruptedException e) {                e.printStackTrace();            }            Human human = companions.get(new Random().nextInt(number-1));            Class humanClass = human.getClass();            Field[] fs = humanClass.getSuperclass().getDeclaredFields();//父類屬性            for(Field f:fs){                System.out.println(f.getName()+":"+humanClass.getMethod("get"+getMethodName(f.getName())).invoke(human, null));//打印出父類屬性值            }            Method[] ms =  humanClass.getSuperclass().getInterfaces()[0].getMethods();//獲得接口方法            Method m = ms[new Random().nextInt(ms.length)];            m.invoke(human, null);//執行接口方法            Method pm = humanClass.getDeclaredMethod("selfMethod");//獲得私有方法            pm.setaccessible(true);//可訪問            pm.invoke(human, null);//執行私有方法        }    }        /**     * 將首字符改為大寫     * @author tomsnail     * @date 2015年4月1日 上午11:40:48     */    private static String getMethodName(String fildeName) throws Exception{          byte[] items = fildeName.getBytes();          items[0] = (byte) ((char) items[0] - 'a' + 'A');          return new String(items);    }        public static void main(String[] args) throws Exception {        Goddess goddess = new Goddess();        goddess.createHuman();        goddess.life();    }    }
女媧創造一個 YellowHuman女媧創造一個 BlackHuman女媧創造一個 WhiteHuman女媧創造一個 WhiteHuman發生意外,創造一個不知道什么的人女媧創造一個 BlackHuman女媧創造一個 YellowHuman女媧創造一個 WhiteHuman我是黑人,我的皮膚顏色是:yellow女媧創造一個 WhiteHumanname:white_7age:0sex:0skin:white我是白人,我在work這是白人私有方法name:white_3age:0sex:0skin:white我是白人,我在eat這是白人私有方法name:white_2我是白人,我在workage:0sex:0skin:white這是白人私有方法name:yellow_0我是黃種人,我在thinkage:0sex:0skin:yellow這是黃種人私有方法name:black_1我是黑人,我在work


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91久久久久久久久| 亚洲美女在线观看| 欧洲成人在线观看| 成人黄色免费网站在线观看| 亚洲网址你懂得| 日韩精品中文字幕有码专区| 91久久久久久久久久| 日韩欧美在线观看| 久久久女人电视剧免费播放下载| 亚洲欧洲在线免费| 久久精品亚洲一区| 8x拔播拔播x8国产精品| 在线观看欧美日韩国产| 精品动漫一区二区| 国产精品久久久久久久av电影| 国产日韩一区在线| 亚洲女人初尝黑人巨大| 不用播放器成人网| 麻豆国产va免费精品高清在线| 精品中文字幕视频| 欧美日产国产成人免费图片| 国产va免费精品高清在线| 亚洲精品videossex少妇| 国产在线一区二区三区| 亚洲国产天堂久久国产91| 亚洲一区制服诱惑| 欧美成人精品三级在线观看| 欧美午夜电影在线| 欧美人交a欧美精品| 在线看欧美日韩| 亚洲第一黄色网| 亚洲在线视频观看| 亚洲国产第一页| 亚洲精品久久久久久久久久久| 色老头一区二区三区在线观看| 国产视频观看一区| 91视频88av| 九九热精品在线| 在线播放精品一区二区三区| 丝袜一区二区三区| 性色av一区二区三区免费| 日韩中文在线中文网三级| 热re99久久精品国产66热| 欧美日韩国产成人在线观看| 国产又爽又黄的激情精品视频| 日本人成精品视频在线| 成人激情视频在线观看| 激情亚洲一区二区三区四区| 亚洲在线视频观看| 国产97在线|亚洲| 欧美老女人xx| 国产一区二区三区三区在线观看| 国产日韩在线精品av| 欧美日韩国产色| 久久久精品国产一区二区| 欧美视频在线看| 国内精品久久久久| 亚洲香蕉成视频在线观看| 国产精品高潮呻吟久久av野狼| 日韩成人在线免费观看| 韩国美女主播一区| 亚洲精品影视在线观看| 亚洲人成毛片在线播放| 亚洲第一区第一页| 国产精品老女人视频| 欧美视频在线视频| 日韩av在线免播放器| 国产在线精品播放| 欧美激情中文字幕在线| 久久99精品久久久久久琪琪| 中文在线资源观看视频网站免费不卡| 国产精品一久久香蕉国产线看观看| 久久成人人人人精品欧| 日韩电视剧免费观看网站| 成人h猎奇视频网站| 深夜福利亚洲导航| 亚洲黄色av女优在线观看| 伊人久久男人天堂| 欧美激情一二三| 亚洲aⅴ日韩av电影在线观看| 国产精品视频免费在线观看| 亚洲男人天堂久| 国产精品成熟老女人| 亚洲福利视频在线| 成人中心免费视频| 欧美在线性视频| 日韩av快播网址| 91亚洲一区精品| 欧美成aaa人片在线观看蜜臀| 91精品国产成人www| 国产精品欧美激情在线播放| 91中文字幕在线观看| 国产精品爽爽爽| 亚洲性视频网站| 久久av红桃一区二区小说| 国产精品av在线| 88国产精品欧美一区二区三区| 69**夜色精品国产69乱| 欧美日产国产成人免费图片| 欧美国产精品人人做人人爱| 国产不卡精品视男人的天堂| 亚洲精品国产综合久久| 国产成人在线亚洲欧美| 国产精品久久久久久久久免费| 欧美第一黄色网| 美日韩精品视频免费看| 97视频在线观看免费| 国产精品永久在线| 91久久在线视频| 成人羞羞国产免费| 亚洲深夜福利网站| 性欧美在线看片a免费观看| 免费不卡在线观看av| 97人人模人人爽人人喊中文字| 日韩av一区二区在线| 精品成人在线视频| 亚洲精品99久久久久中文字幕| 欧美大片va欧美在线播放| 亚洲国产精品人人爽夜夜爽| 日韩中文字幕不卡视频| 国产亚洲欧洲高清| 91国产美女在线观看| 久久精品成人欧美大片| 成人亚洲综合色就1024| 自拍偷拍亚洲区| 久久久91精品国产一区不卡| 亚洲在线免费视频| 亚洲直播在线一区| 国产精品偷伦免费视频观看的| 国产精品成人免费电影| 亚洲伊人久久大香线蕉av| 欧美激情一级二级| 日韩最新在线视频| 亚洲国产精品99| 亚洲欧美国产日韩中文字幕| 国产美女精品视频| 久久久91精品国产一区不卡| 国产性猛交xxxx免费看久久| 亚洲欧美国产日韩中文字幕| 国产精品美女在线观看| 精品国产一区二区三区在线观看| 一区二区三区在线播放欧美| 亚洲在线第一页| 91色p视频在线| 国产视频久久久| 国产精品∨欧美精品v日韩精品| 亚洲福利视频专区| 97超级碰在线看视频免费在线看| 国产做受69高潮| 成人午夜黄色影院| 欧美福利小视频| 懂色av中文一区二区三区天美| 欧美成人免费va影院高清| 国产成一区二区| 91精品国产综合久久久久久久久| 亚洲精品国精品久久99热| 中文字幕不卡在线视频极品| 国产亚洲精品久久久优势| 精品久久久av| 欧美亚州一区二区三区| 亚洲精品福利免费在线观看| 国产精品美女网站| 91精品视频观看| 欧美激情精品久久久久久变态|