JAVA反射机制是在运行状况中,关于恣意一个类,都能够晓得这个类的一切属性和要领;关于恣意一个对象,都能够挪用它的恣意一个要领和属性;这类动态猎取的信息以及动态挪用对象的要领的功用称为java言语的反射机制。
要想剖解一个类,必需先要猎取到该类的字节码文件对象。而剖解运用的就是Class类中的要领.所以先要猎取到每个字节码文件对应的Class范例的对象.
反射就是把java类中的种种身分映射成一个个的Java对象
比方:一个类有:成员变量、要领、组织要领、包等等信息,应用反射手艺可以对一个类举行剖解,把个个组成部分映射成一个个对象。
如图是类的一般加载历程:反射的道理在与class对象。
熟习一下加载的时刻:Class对象的由来是将class文件读入内存,并为之建立一个Class对象。
猎取Class对象的三种体式格局
1.1 Object ——> getClass();
1.2 任何数据范例(包含基础数据范例)都有一个“静态”的class属性
1.3 经由过程Class类的静态要领:forName(String className)(经常使用)
个中1.1是由于Object类中的getClass要领、由于一切类都继续Object类。从而挪用Object类来猎取
示例:经由过程反射挪用类定义的要领
@Test // 经由过程反射挪用类定义的要领 public void testInvokeMethod() throws Exception { Class clazz = Class.forName("java.lang.String"); // 定义参数范例 Class[] params = new Class[1]; params[0] = String.class; Method m = clazz.getDeclaredMethod("indexOf", params); // 设置参数 Object[] p = new Object[1]; p[0] = "e"; Integer s = (Integer) m.invoke("helloworld!", p); System.out.println(s); }
以上就是Java 反射怎样取得要领的细致内容,更多请关注ki4网别的相干文章!