标签:style blog io color os ar 使用 java for
<action name="registe" class="cn.com.huixin.struts2.RegisteAction"><result>/registeResult.jsp</result> <result name="input">/registe2.jsp</result> </action>
package com.qianfeng.reflect;
import com.qianfeng.domain.Person;
/*
反射:动态获取类或类中成员,并使用类或类中成员
获取一个类字节码文件对象的方式 (类名的.class)
*/
public class ReflectDemo1 {
public ReflectDemo1() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) throws ClassNotFoundException {
//get1();
//get2();
get3();
}
private static void get3() throws ClassNotFoundException {
//通过字符串形式的名称来获取字节码文件对象,不需要对象,也不需要类
Class claz = Class.forName("com.qianfeng.domain.Person");
System.out.println(claz);
}
private static void get2() {
//每个数据类型都有一个class属性,可以通过类的该属性获取其所属类的字节码文件对象
//不需要对象,但是需要类
Class claz = Person.class;
Class claz2 = Person.class;
System.out.println(claz==claz2);
}
private static void get1() {
//方式一:通过对象来获取所属类的字节码文件对象
//任何一个对象都有其所属类的字节码文件对象
//new Person() Person.class
//特点:这种方式需要创建对象
Person p1 = new Person();
Class claz1 = p1.getClass();//Person.class
Person p2 = new Person();
Class claz2 = p2.getClass();//Person.class
System.out.println(claz1==claz2);
}
}
package com.qianfeng.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import com.qianfeng.domain.Person;
public class ReflectDemo2 {
/**
* @param args
* @throws ClassNotFoundException
* @throws IllegalAccessException
* @throws InstantiationException
* @throws SecurityException
* @throws NoSuchMethodException
* @throws InvocationTargetException
* @throws IllegalArgumentException
*/
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException {
//动态获取类,并创建对象
createObj();
createObj2();
}
private static void createObj2() throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
//动态获取类
String str="com.qianfeng.domain.Person";
Class claz = Class.forName(str);
//int.class;
//使用带参数的构造方法创建对象
//首先要得到带参数的构造方法
//Person p = new Person("lsdjkf",34);//String.class int.class
Constructor con = claz.getConstructor(String.class,int.class);
//使用获取到的构造方法创建对象
Object obj = con.newInstance("李四",29);//调用构造方法对象的newInstance()方法
System.out.println(obj);
}
private static void createObj() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
//Person p = new Person();
//1加载Person.class 2:开辟内存 3:构造方法
//动态获取类
String str="com.qianfeng.domain.Person";
Class claz = Class.forName(str);
//创建对象
Object obj = claz.newInstance();//调用这个字节码文件对象的newInstance()方法
System.out.println(obj);
}
}
package com.qianfeng.reflect;
import java.lang.reflect.Field;
public class ReflectDemo3 {
/**
* @param args
* @throws ClassNotFoundException
* @throws SecurityException
* @throws NoSuchFieldException
* @throws IllegalAccessException
* @throws InstantiationException
*/
public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, SecurityException, InstantiationException, IllegalAccessException {
// 动态获取类并创建对象后,访问成员属性
accessField();
}
private static void accessField() throws ClassNotFoundException, NoSuchFieldException, SecurityException, InstantiationException, IllegalAccessException {
//Person p = new Person();
//p.name = "";
//动态获取类
String str="com.qianfeng.domain.Person";
Class claz = Class.forName(str);
//获取字段
//Field f = claz.getField("name");//只能获取权限是public的字段
Field f = claz.getDeclaredField("name");
//System.out.println(f);
//给字段赋值--需要先有对象
//创建对象
Object obj = claz.newInstance();
//设置权限为可访问的
f.setAccessible(true);//暴力访问
//给字段赋值
f.set(obj, "小花");
System.out.println(obj);
}
}
package com.qianfeng.reflect;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class ReflectDemo4 {
/**
* @param args
* @throws ClassNotFoundException
* @throws SecurityException
* @throws NoSuchMethodException
* @throws InvocationTargetException
* @throws IllegalArgumentException
* @throws IllegalAccessException
* @throws InstantiationException
*/
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
//动态获取类并创建对象后,访问成员方法
// accessMethod();
accessMethod1();
accessMethod2();
}
private static void accessMethod2() throws NoSuchMethodException, SecurityException, ClassNotFoundException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
//动态获取类
String str="com.qianfeng.domain.Person";
Class claz = Class.forName(str);
Method m = claz.getMethod("meth", null);
m.invoke(null,null);
}
//得到带参数的方法并执行
private static void accessMethod1() throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
//动态获取类
String str="com.qianfeng.domain.Person";
Class claz = Class.forName(str);
Method m = claz.getMethod("func", String.class);
Object obj = claz.newInstance();
m.invoke(obj, "haha");
}
//得到不带参数的方法并执行
private static void accessMethod() throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
//动态获取类
String str="com.qianfeng.domain.Person";
Class claz = Class.forName(str);
Method m = claz.getMethod("show",null);
//创建对象
Object obj = claz.newInstance();
m.invoke(obj,null);
}
}
标签:style blog io color os ar 使用 java for
原文地址:http://blog.csdn.net/love_javc_you/article/details/40650297