首页 / JAVA / Java中的反射机制
Java中的反射机制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java中的反射机制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2126字,纯文字阅读大概需要4分钟。
内容图文
![Java中的反射机制](/upload/InfoBanner/zyjiaocheng/772/3daef48977b84810a72934c029b671a2.jpg)
Java中的反射,百度百科这样解释道:在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。
例如:
package com.bean;
public class Goods {// 商品类
private int id = 1001;
private String name = "泡面";
private double price = 4.5;
public Goods(int id, String name) {
System.out.println("Goods(int id, String name)");
this.id = id;
this.name = name;
}
public Goods(String name) {
System.out.println("Goods(String name)");
this.name = name;
}
public Goods() {
System.out.println("无参构造器...");
}
public int getId() {
System.out.println("Goods.getId()");
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "[编号:" + id + ", 名称:" + name + ", 价格:" + price + "]";
}
}
获取Class对象的三种方式:
Class<?> c1 = (new Goods()).getClass(); // 对象名.getClass()
Class<?> c2 = Goods.class; // 类名.class
Class<?> c3 = Class.forName("com.bean.Goods"); // Class.forName("类的全路径名");
1.创建对象
Class clazz = Class.forName("com.bean.Goods");// 得到类字节码
// 创建对象1: 默认构造函数简写
Goods g1 = (Goods) clazz.newInstance();
// 创建对象2: 通过带参数构造器创建对象
Constructor<?> cons = clazz.getConstructor(int.class, String.class);
Goods g2 = (Goods) cons.newInstance(100, "可口可乐");
System.out.println(g1);
System.out.println(g2);
2.获取属性和值
Class clazz = Class.forName("com.bean.Goods");
Goods g = (Goods) clazz.newInstance();
System.out.println(g);
Field[] fil = clazz.getDeclaredFields();// 获取所有的属性名称
for (Field f : fil) {
f.setAccessible(true);// 设置强制访问
String name = f.getName();// 名称
Object value = f.get(g);// 值
System.out.println(name + "\t" + value);
}
3.获取方法
Class clazz = Class.forName("com.bean.Goods");
Goods g = (Goods) clazz.newInstance();
System.out.println(g);
Method met = clazz.getDeclaredMethod("getId");
Object ob = met.invoke(g);//方法的返回值
System.out.println(ob);
内容总结
以上是互联网集市为您收集整理的Java中的反射机制全部内容,希望文章能够帮你解决Java中的反射机制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。