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;

3.获取反射的构造函数。有了主要的Class类,要获取类的对象,首先要获取类的构造函数,这里主要使用的是Class类的getConstructor方法,例如以下所看到的:

		//使用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));
} }

5.获取反射的方法。

	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));
}


java反射机制简单介绍的更多相关文章

  1. java反射机制简单实例

    目录 Java反射 简单实例 @(目录) Java反射 Java语言允许通过程序化的方式间接对Class进行操作.Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通 ...

  2. Java反射机制 —— 简单了解

    一.概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为jav ...

  3. Java反射机制简单使用

    1.Java反射相关类所在package: java.lang.reflect.* 2.开始使用Reflection: 使用reflect相关类,遵循三个步骤: a.获取想要操作类的 java.lan ...

  4. Java反射机制简单学习

    java中除了基本数据类型,几乎都为对象.例如 Person p=new Person(); 这句语句表明了p是Person类的一个实例对象.但其实,Person也是一个实例对象,它是Class类的实 ...

  5. java反射机制-简单实例

    public class Car { private String brand; private String color; private int maxSpeed; public Car() { ...

  6. java反射机制的简单介绍

    参考博客: https://blog.csdn.net/mlc1218559742/article/details/52754310 先给出反射机制中常用的几个方法: Class.forName (& ...

  7. Java 反射机制介绍

    参考文章:http://www.cnblogs.com/skywang12345/p/3345205.html Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据“类的部分已经的信息”来还 ...

  8. Java反射机制剖析(三)-简单谈谈动态代理

    通过Java反射机制剖析(一)和Java反射机制剖析(二)的学习,已经对反射有了一定的了解,这一篇通过动态代理的例子来进一步学习反射机制. 1.     代理模式 代理模式就是为其他对象提供一种代理来 ...

  9. java反射机制的简单使用

    java 反射机制 反射机制简介 参考地址 什么是反射机制 反射机制指程序在运行时能够获取自身的信息.在java中只要给定类的名字,就可以通过反射机制获得类的所有信息 反射机制的优缺点 首先了解一下动 ...

随机推荐

  1. centos7下vi的用法

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任何版本,vi编辑器是完全相 ...

  2. str.format() 格式化字符串函数

    语法 它通过{}和:来代替%. “映射”示例 通过位置 In [1]: '{0},{1}'.format('kzc',18) Out[1]: 'kzc,18' In [2]: '{},{}'.form ...

  3. Spring如何解析Dubbo标签

    1. 要了解Dubbo是如何解析标签的,首先要清楚一点就是Spring如何处理自定义标签的,因为Dubbo的标签可以算是Spring自定义标签的一种情况: 2. Spring通过两个接口来解析自定义的 ...

  4. java基础9 main函数、this、static、super、final、instanceof 关键字

    一.main函数详解 1.public:公共的.权限是最大的,在任何情况都可以访问  原因:为了保证jvm在任何情况下都可以访问到main法2.static:静态,静态可以让jvm调用更方便,不需要用 ...

  5. leetcode 之Permutation(七)

    首先是next permutation的算法的描述和分析如下: 这题一是要知道思路,编程中注意STL的用法 void nextPermutaion(vector<int> &num ...

  6. HDU 1686 Oulipo(KMP变形求子串出现数目(可重))

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686 题目大意:给两个字符串A,B求出A中出现了几次B(计算重复部分). 解题思路:稍微对kmp()函 ...

  7. HDU 4725 The Shortest Path in Nya Graph(spfa+虚拟点建图)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4725 题目大意:有n层,n个点分布在这些层上,相邻层的点是可以联通的且距离为c,还有额外给出了m个条边 ...

  8. 再读《Parallel Programming with Python》并作笔记

    并发编程,在哪个语言里都属于高端应用,一定得会了才好意思说懂了这门语言. 在工作中用得并不是很多,忘了一些内容,就慢慢看,慢慢补上. 今天一天看了近三分之一(我看外文越来越快了??:)), 实践一下多 ...

  9. 关于HTML&CSS的笔记

    最近在看Jon Duckett的HTML&CSS一书(http://book.douban.com/subject/6585090/),书的排版和讲解方式很不错,并且有许多其他教学材料遗漏的关 ...

  10. 【PAT】1009. 说反话 (20)

    1009. 说反话 (20) 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其 ...