JAVA 反射机制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA 反射机制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1990字,纯文字阅读大概需要3分钟。
内容图文
![JAVA 反射机制](/upload/InfoBanner/zyjiaocheng/743/ee7579847e2f4727b9febafbe3198aa3.jpg)
JAVA反射机制的本质是调用类的Class对象,通过操纵目标类Class对象来实现操纵目标对象
Class类对象是类装载器(ClassLoader)装载类之后,调用defineClass()生成的类的描述对象。
简单举例
package com.smart;
/**
* @Author windy
* @Desp
* @Date 2019-07-29 20:43
*/
public class Car {
private String brand;
private String color;
private int maxSpeed;
public Car(){}
public Car(String brand, String color, int maxSpeed){
this.brand = brand;
this.color = color;
this.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;
}
@Override
public String toString() {
return "Car{" +
"brand='" + brand + '\'' +
", color='" + color + '\'' +
", maxSpeed=" + maxSpeed +
'}';
}
}
测试类
package com.smart;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
/**
* @Author windy
* @Desp
* @Date 2019-07-29 20:45
*/
public class ReflectTest {
public static Car initDefaultCar() throws Throwable {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class clazz = loader.loadClass("com.smart.Car");
Constructor cons = clazz.getDeclaredConstructor();
Car car = (Car) cons.newInstance();
Method setBrand = clazz.getMethod("setBrand", String.class);
setBrand.invoke(car, "大众");
Method setColor = clazz.getMethod("setColor", String.class);
setColor.invoke(car, "红色");
Method setMaxSpeed = clazz.getMethod("setMaxSpeed", int.class);
setMaxSpeed.invoke(car, 180);
return car;
}
public static void main(String[] args) throws Throwable {
System.out.println(initDefaultCar());
}
}
获取当前线程的ContextClassLoader, 使用loadClass() 方法去加载指定类,生成Class对象,通过Class对象的描述信息,去获取 getDeclaredConstructor() 构造器,有了构造器 就可以初始化类了,这是间接的操纵这个类,通过 getMethod() 方法获取指定的方法,使用invoke() 方法调用该方法。当然了 也可以获取属性。
内容总结
以上是互联网集市为您收集整理的JAVA 反射机制全部内容,希望文章能够帮你解决JAVA 反射机制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。