大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java反射實(shí)例的詳細(xì)介紹

Java反射實(shí)例的詳細(xì)介紹

更新時(shí)間:2022-03-22 10:02:20 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1382次

Java 反射是在運(yùn)行時(shí)檢查或修改類的運(yùn)行時(shí)行為的過(guò)程。

java.lang.Class類提供了許多可用于獲取元數(shù)據(jù)、檢查和更改類的運(yùn)行時(shí)行為的方法。

java.lang 和 java.lang.reflect 包為 java 反射提供了類。

在哪里使用

反射 API 主要用于:

IDE(集成開(kāi)發(fā)環(huán)境),例如 Eclipse、MyEclipse、NetBeans 等。

調(diào)試器

測(cè)試工具等

簡(jiǎn)單實(shí)例

我們將從一個(gè)簡(jiǎn)單的例子開(kāi)始探訪Java反射機(jī)制的征程。下面的Car類擁有兩個(gè)構(gòu)造函數(shù)、一個(gè)方法及3個(gè)屬性。

package com.smart.reflect;
public class Car {
    private String brand;
    private String color;
    private int maxSpeed;
    public Car() {
        System.out.println("init car!!");
    }
    public Car(String brand, String color, int maxSpeed) {
        this.brand = brand;
        this.color = color;
        this.maxSpeed = maxSpeed;
    }
    public void introduce() {
        System.out.println("brand:" + brand + ";color:" + color + ";maxSpeed:" + maxSpeed);
    }
    public String getBrand() {
        return brand;
    }
    public void setBrand(String brand) {
        this.brand = brand;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public int getMaxSpeed() {
        return maxSpeed;
    }
    public void setMaxSpeed(int maxSpeed) {
        this.maxSpeed = maxSpeed;
    }
}

一般情況下,我們會(huì)使用如下代碼創(chuàng)建Car的實(shí)例:

Car car = new Car();
car.setBrand("紅旗CA72");

或者:

Car car = new Car("紅旗CA72","黑色");

以上兩種方法都采用傳統(tǒng)方式直接調(diào)用目標(biāo)類的方法。下面我們通過(guò)Java反射機(jī)制以一種間接的方式操控目標(biāo)類。

package com.smart.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
public class ReflectTest {
    public static Car initByDefaultConst() throws Throwable {
        //①通過(guò)類裝載器獲取Car類對(duì)象
        ClassLoader loader = Thread.currentThread().getContextClassLoader();
        Class clazz = loader.loadClass("com.smart.reflect.Car");
        //②獲取類的默認(rèn)構(gòu)造器對(duì)象并通過(guò)它實(shí)例化Car
        Constructor cons = clazz.getDeclaredConstructor((Class[]) null);
        Car car = (Car) cons.newInstance();
        //③通過(guò)反射方法設(shè)置屬性
        Method setBrand = clazz.getMethod("setBrand", String.class);
        setBrand.invoke(car, "紅旗CA72");
        Method setColor = clazz.getMethod("setColor", String.class);
        setColor.invoke(car, "黑色");
        Method setMaxSpeed = clazz.getMethod("setMaxSpeed", int.class);
        setMaxSpeed.invoke(car, 200);
        return car;
    }
    public static void main(String[] args) throws Throwable {
        Car car = initByDefaultConst();
        car.introduce();
    }
}

運(yùn)行以上程序,在控制臺(tái)上將打印出以下信息:

brand:紅旗CA72;color:黑色;maxSpeed:200

這說(shuō)明我們完全可以通過(guò)編程方式進(jìn)行Java反射調(diào)用Class的各項(xiàng)功能,與通過(guò)構(gòu)造函數(shù)和方法直接調(diào)用類功能的效果是一致的,只不過(guò)前者是間接調(diào)用,后者是直接調(diào)用罷了。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 老头老太做爰xxxx视频 | 男人天堂视频在线 | 四虎色姝姝影院www 四虎色影院 | 日日夜夜免费精品 | 男人深夜影院 | 青青青青青国产免费观看 | 久久精品国产99国产精品免费看 | 久久国产精品视频 | 久久这里只有精品首页 | 在线观看一级 | 久久久精品一区二区三区 | 亚州精品一区二区三区 | 亚洲日本va中文字幕区 | 日本毛片大全 | 亚洲七七久久精品中文国产 | 色最快国产 | 亚洲欧美精品日韩欧美 | 亚洲综合a | 青青在线成人免费视频 | 福利在线观看 | 一级一级18女人毛片 | 久久久日本精品一区二区三区 | 日韩中文字幕视频在线观看 | 美国一级毛片片免费 | 999精品在线| 久久老色鬼天天综合网观看 | 成 人 色综合 | 四虎影视成人永久在线播放 | 中文字幕日韩一区二区三区不 | 日日狠狠太爽爽 | 中文日韩字幕 | www.男人的天堂.com | 精品久久久中文字幕二区 | 日韩欧美第一区二区三区 | 在线播放人成午夜免费视频 | 国产精品一区伦免视频播放 | 亚洲欧美乱综合图片区小说区 | 成人永久免费视频网站在线观看 | 欧美日韩一区二区三区毛片 | 国产精品久久久久久久网站 | 狠狠做深爱婷婷久久一区 |