您的位置:首页 > 编程语言 > Java开发

Java反射 (一些总结性知识,可能不全面)

2014-09-24 21:50 323 查看
Java反射:

1.对象存在JVM中,需要得到类的定义原型  ClassForName通过已知字符串来载入一个类的形式(字符串形式生成对象)

2.根据一个类的字符串形式,动态产生对象 (对象Object但类型不知道)

java.lang.Class:一个类的原型定义

java.lang.reflect.Method:代表类的方法

java.lang.reflect.Field:代表类的成员变量

java.lang.reflect.Constrctor:代表类的构造方法

//------------------------------------------------------------------//

Class c=o.getclass();//得到对象的基本定义

Field[] fs=c.getDeclaredFields();//得到属性

Method[] ms=c.getDeclaredMethods();//得到方法

//------------------------------------------------------------------//

//由方法获取值------动态调用方法

Method m1=c.getDeclareMethod("getName",new Class[0]);//Class[0]填充作用,针对没有参数的

Method m2=c.getdeclaredMethod("setName",String.class)//

//类.class  对象 new Class[0]

        m2.invoke(对象,“字符串对象”)//调用setName

(String)m1.invoke(对象,new Object[0])//调用getName

//------------------------------------------------------------------//

//由属性得到方法名字

  Field[] fs=c.getDeclaredFields();

  for(Field f:fs){

  String fname=f,getName();//获取属性名称

  String mname="get"+Character.toUpperCase(fname.charAt(0))+fname.substring(1);//转换成方法

  Method m=c.getDeclaredMethod(mname,new Class[0]);//把这个名称放进去就得到这个方法

}

--------------通用dao(插入sql)-------------------------------------

tringBuffer sql = new StringBuffer("insert into ");
StringBuffer sql2 = new StringBuffer("");
StringBuffer sql3 = new StringBuffer("");
sql = sql.append(tablename + "(");
for (Field f : fd) {
sql = sql.append(f.getName());
sql.append(",");
Method m = c.getDeclaredMethod(
sql2.append(
("get"
+ Character.toUpperCase(f.getName()
.charAt(0)) + f.getName()
.substring(1))).toString(),
new Class[0]);
String rs = (String) m.invoke(o, new Object[0]);
sql3.append(rs);
sql3.append(",");
sql2=new StringBuffer("");
}
sql = new StringBuffer(sql.substring(0, sql.length() - 1));
sql = sql.append(") values(");
sql3 = new StringBuffer(sql3.substring(0, sql3.length() - 1));// 方法名

sql = sql.append(sql3);
sql = sql.append(")");
System.out.println(sql);

----------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java