首页 / JAVA / java反射机制简单介绍
java反射机制简单介绍
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java反射机制简单介绍,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1651字,纯文字阅读大概需要3分钟。
内容图文
1.字节码。所谓的字节码就是当java虚拟机载入某个类的对象时,首先须要将硬盘中该类的源码编译成class文件的二进制代码(字节码),然后将class文件的字节码载入到内存中,之后再创建该类的对象
2.java反射的基础是Class类(注意不是小写的class),Class类实例代表着内存中的一份字节码。常见的获取Class类对象的方法例如以下(第一种为对象的方法,另外一种为类的方法):
Dog dog = new Dog(); Class dogClass = dog.getClass(); Class dogClass = Class.forName("Dog"); Class dogClass = Dog.class;
//使用StringBuffer来构造String对象 String str1 = new String(new StringBuffer("hello")); //获取String类对应的构造函数对象 Constructor c1 = String.class.getConstructor(StringBuffer.class); //错误,这里的參数类型必须和获取构造函数时的參数类型(及StringBuffer.class)一致 String str2 = (String)c1.newInstance(new String("world")); //正确 String str3 = (String)c1.newInstance(new StringBuffer("world")); System.out.println(str3);
4.获取反射的字段。
import java.lang.reflect.Field;
class Point{
public int x;//这里是public
private int y;//注意这里是private
Point(int x,int y){
this.x = x;
this.y = y;
}
}
public class ReflectTest {
public static void main(String[] args) throws Exception {
Point p = new Point(2,3);
//getField仅仅能获得public的字段
Field fieldX = p.getClass().getField("x");
//获取x的值
System.out.println(fieldX.get(p));
//getDeclaredField能够获取全部字段
Field fieldY = p.getClass().getDeclaredField("y");
//设置y的属性
fieldY.setAccessible(true);
System.out.println(fieldY.get(p));
}
}
public static void main(String[] args) throws Exception { String s1 = "hello"; //參数为函数名,函数的參数(可变长) Method m = s1.getClass().getMethod("charAt", int.class); //參数为要调用的对象,以及函数的參数。这里假设第一个參数为null,表示调用的是类的静态方法 System.out.println(m.invoke(s1, 1)); }
原文:http://www.cnblogs.com/yxwkf/p/3819748.html
内容总结
以上是互联网集市为您收集整理的java反射机制简单介绍全部内容,希望文章能够帮你解决java反射机制简单介绍所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。