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

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


----------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值