java反射机制
JAVA反射机制介简简
Java反射机制是在运行状中,于任意一个,都能知道简简简简简简简简简简简简简简简简简个的所有属性和
,于任意一个象,都能简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简简用它的任意一个方法,取的信息以及用象的方法的功能称Java简言的反射机制。
Java 反射机制主要提供了以下功能:
* 在运行判断任意一个象所属的。简简简简简简简简简简简简简简
* 在运行构造任意一个的象。简简简简简简简简简简简简
* 在运行判断任意一个所具有的成量和方法。简简简简简简简简简简简简简简简简简简简简* 在运行用任意一个象的方法。简简简简简简简简简简简简简
反射是Java被,或准,言的一个性。简简简简简简简简简简简简简简简简简简简简3、入代简简简简
我一,概念大致了解就行,是会用:竟我简简简简简简简简简简简简简简简简简简简简简简简是工程,的好听点,不能自己埋汰自己,:简简简简简简简简简简简简简简简简简简简简简简来,看下面的代吧,得写代一定要加上注啊,才是,:简简简简简简简简简简简简简简简简简简简简简简简简package com.majun.ref;
public class Test extends SuperTest implements Interface1, Interface2
{
public String name;
public Test(){
}
public Test(String s1, String s2){}
public void print(String msg){}
public int add(int a, int b){
return a + b;
}
}
Test只是个了演示而写的一个准,有接口,有简简简简简简简简简简简简简简简简简简简简超承,有属性,上面代接口和父都没定简简简简简简简简简简简简简简简简简简简简简
的,,有方法:里代没有完全出,也不需要介简简简简简简简简简简简简简简简简简简简了:,下面个才是真正演示反射的:简简简简简简简简简简简简简
package com.majun.ref;
import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Type;public class ReflectTest {
public static void main(String[] args) throws Exception {
Class> classType =
Class.forName("com.cn.Reflect.Test");
// 简取属性(getFields只能取简简public简型的属性,getDeclaredFields可以取所有属性,简简简简简简简
// (下同,注意Declared修简简)
Field[] fs = classType.getFields();//
.getDeclaredFields();?
for (Field f : fs) {
System.out.println(f.getName()+"--");
}
// 简取指定的属性
Field f = classType.getDeclaredField("name");// .getField("name");
System.out.println(f.toString()+"++");
// 简取构造函数
Constructor>[] cs =
classType.getDeclaredConstructors();// .getConstructors();
for (Constructor> c : cs) {
System.out.println(c.toString());
}
// 简简简简简简简简取指定参数型的构造函数
Constructor> c =
classType.getConstructor(java.lang.String.class,
java.lang.String.class);//
.getDeclaredConstructor(java.lang.String.class);
System.out.println(c.toString());
// 简简简简简简取直接的接口
Type[] ts = classType.getGenericInterfaces();
for (Type t : ts) {
System.out.println(t.toString());
}
// 简简简简简简取直接承的超
Type t = classType.getGenericSuperclass();
System.out.println(t.toString());
// 简取方法
Method[] ms = classType.getDeclaredMethods();// .getMethods();
for (Method m : ms) {
System.out.println(m.toString());
}
// 简取指定的方法
Method m = classType.getMethod("print", new Class[] { String.class });
System.out.println(m.toString());
// 方法用简简
Object invoker = classType.newInstance();
Method md = classType.getMethod("add", new Class[] { int.class,
int.class });
Object obj = md.invoke(invoker, new Object[] { new Integer(19),
new Integer(65) });
//System.out.println((Integer) obj);
//简取指定的方法
Object invoker2 = classType.newInstance();
Method md2 = classType.getMethod("printTwo", new Class[]{ String.class });
Object obj2 = md2.invoke(invoker2, new Object[] {new String("简简简参数的方法")});
System.out.println((String)obj2);
}
}4、通上面的学,我简简简简简简简简简简简简Java放射机制有了一个大致的了解了,于其他简简简简一些常用的用,比如运行制象、运行改属性内简简简简简简简简简简简简简简简简简简简简简
容、建数等,里不再演示:简简简简简简简简简简简简简简简
5、冰山一角
当然,Java反射不会,后面的内容海着呢,里只简简简简简简简简简简简简简简简简简简能算是冰山一角,更大的奥妙等着你去学:简简