大战熟女丰满人妻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ù)文檔推薦 >>
主站蜘蛛池模板: 亚洲成a人片77777kkk | 黄色成人在线网站 | 亚洲综合国产一区二区三区 | 香蕉免费一区二区三区在线观看 | 一级国产精品一级国产精品片 | 免费特黄一级欧美大片在线看 | 欧美毛片xxxx | 国内精品免费网站牛牛 | 5060午夜一级毛片 | 中文字幕亚洲区 | 人妖粗暴刺激videos | 欧洲色综合精品 | 黄色毛片大全 | 94在线成人免费视频 | 久久福利一区二区三区 | 国产伦精品一区二区三区女 | 99九九精品免费视频观看 | 在线第一福利视频观看 | 日韩欧美中文字幕一区二区三区 | 欧美乱大交xxxxx在线观看 | 久久精品国产日本波多麻结衣 | 精品视频中文字幕 | 欧美日韩在线视频播放 | 夜夜操网| 九九国产精品视频 | 国产真实伦视频在线视频 | 精品黑人一区二区三区 | 99中文在线 | 国产精品v一区二区三区 | 欧美成人xx免费视频 | 橘梨纱视频一区二区在线观看 | 毛片 mp4| 亚洲欧洲国产经精品香蕉网 | 亚洲精品aⅴ一区二区三区 亚洲精品ccc | 天天干天天色天天射 | 欧美综合视频在线观看 | 橘梨纱视频一区二区在线观看 | 亚洲第五色综合网 | 久久久人体 | 国产婷婷高清在线观看免费 | 国产亚洲一区呦系列 |