- 浏览: 801299 次
- 性别:
- 来自: 哈尔滨
文章分类
最新评论
-
doloveme:
$sudo cp MONACO_Linux.ttf /usr/ ...
terminator 的配置 -
腾讯rep:
lowser
RSA加密算法c++简单实现 -
csuhanyong:
好YD啊,好YD
一图流:机械键盘各轴区别 -
doloveme:
1。其中:extman ,extmail下载http://ww ...
Ubuntu下安装postfix+extmail邮件服务器 -
doloveme:
repo sync出现“fatal: '../platform ...
Android 编译环境配置搭建(Ubuntu 12.04)及环境导致编译错误QA
//用来测试的javaBean public class Stu { private int id; public static void main(String[] args) throws ClassNotFoundException { //result: 输入一个类名: //方法一 //方法一输出结果: id stuName ////////////一个应用实例 package com.reflect; import java.beans.IntrospectionException; import com.testBean.Stu; /** } 10 //从上面的例子我觉得我们可以利用反射来简化struts(Action)中对数据库插入的操作人们可以写一个方法impl.save(StuBean.class,request); 如此种用反射从request中得到页面的值,可从StuBean中得到属性,然后利用反射配起来。忧点可以避免写重复的Bean.setXxx()..... 可以这样三步解决: StuBean stu=new StuBean(); impl.save(stu,request); dao.save(stu);//hibernate DAO 或Spring DAO //如果实体bean是私有的,用这个代替上面的方法 public void method(Object obj,List propertyNames,List propertyVales) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{
private String stuName;
public Stu(){}
public Stu(int id,String stuName){
this.id=id;
this.stuName=stuName;
}
public void setAll(int id,String stuName){
this.id=id;
this.stuName=stuName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String toString(){
return id+stuName;
}
}
//
Class cla=Class.forName("com.testBean.Stu");
//解析属性信息
Field[] f=cla.getDeclaredFields();
for (Field field : f) {
System.out.println("属性="+field.toString());
System.out.println("数据类型="+field.getType());
System.out.println("属性名="+field.getName());
int mod=field.getModifiers();
System.out.println("属性修饰符="+Modifier.toString(mod));
}
//解析方法信息
Method[] methodlist=cla.getDeclaredMethods();
for (Method method : methodlist) {
System.out.println("---------------");
System.out.println("方法="+method.toString());
System.out.println("方法名="+method.getName());
int mod=method.getModifiers();
System.out.println("方法修饰符="+Modifier.toString(mod));
System.out.println("方法参数列表");
Class pts[]=method.getParameterTypes();
for (int i = 0; i < pts.length; i++) {
Class class1 = pts[i];
if(i!=0){
System.out.println(class1);
}
System.out.println("返回类型"+method.getReturnType());
}
}
}
属性=private int com.testBean.Stu.id
数据类型=int
属性名=id
属性修饰符=private
属性=private java.lang.String com.testBean.Stu.stuName
数据类型=class java.lang.String
属性名=stuName
属性修饰符=private
---------------
方法=public void com.testBean.Stu.setAll(int,java.lang.String)
方法名=setAll
方法修饰符=public
方法参数列表
返回类型void
class java.lang.String
返回类型void
---------------
方法=public void com.testBean.Stu.setId(int)
方法名=setId
方法修饰符=public
方法参数列表
返回类型void
---------------
方法=public java.lang.String com.testBean.Stu.getStuName()
方法名=getStuName
方法修饰符=public
方法参数列表
---------------
方法=public void com.testBean.Stu.setStuName(java.lang.String)
方法名=setStuName
方法修饰符=public
方法参数列表
返回类型void
---------------
方法=public java.lang.String com.testBean.Stu.toString()
方法名=toString
方法修饰符=public
方法参数列表
---------------
方法=public int com.testBean.Stu.getId()
方法名=getId
方法修饰符=public
方法参数列表
public static void mm(Class cla){
Field[] fs=cla.getDeclaredFields();
//fs=cla.getFields();加了这个的话就只获得public 公有的
for (Field f : fs) {
System.out.println(f.getName());
}
}
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
public class Test {
* 利用反射对实体bean赋值
*
*/
public static void main(String[] args) throws IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchFieldException {
// TODO 自动生成方法存根
Stu stu=new Stu();
Test t=new Test();
List propertyVales=t.getPropertyVal();
for (Object object : propertyVales) {
System.out.println(object.toString());
}
List propertyNames=t.getPropertyNames(Stu.class);
for (Object object : propertyNames) {
System.out.println(object);
}
t.method(stu, propertyNames, propertyVales);
System.out.println(stu);
}
public List getPropertyVal(){
List propertyValues=new ArrayList();
propertyValues.add(10);
propertyValues.add("my name");
return propertyValues;
}
public void method(Object obj,List propertyNames,List propertyVales) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{
Class cla=obj.getClass();
for(int i=0;i<propertyNames.size();i++){
Field f=cla.getField(propertyNames.get(i).toString());
f.set(obj, propertyVales.get(i));
}
}
public List getPropertyNames(Class cla){
List list=new ArrayList();
Field[] fs=cla.getDeclaredFields();
//fs=cla.getFields();加了这个的话就只获得public 公有的
for (Field f : fs) {
list.add(f.getName());
}
return list;
}
//输出:
my name
id
stuName
10my name
Class cla=obj.getClass();
for(int i=0;i<propertyNames.size();i++){
Field f=cla.getDeclaredField(propertyNames.get(i).toString());
f.setAccessible(true);//加了这句才能改私有的值
f.set(obj, propertyVales.get(i));
}
}
发表评论
-
SpringMVC入门
2015-07-02 18:23 739目录 介绍 实例 总结 参考资料 介绍 Sp ... -
java线程中yield(),sleep(),wait()区别详解
2014-09-03 13:23 6271、sleep() 使当前线程(即调用该方法的线程)暂停执 ... -
线程方法 joine
2014-09-02 11:51 679Example1: Java代码 ... -
Java transient关键字
2014-06-24 15:46 463Volatile修饰的成员变量在每次被线程访问时,都强迫从主内 ... -
Android EditText不弹出输入法焦点问题的总结
2014-02-27 01:24 884同样的代码,碰到有EditText控件的界面时有的机 ... -
GIT查看、删除、重命名远程分支和TAG
2014-02-20 09:47 1097这篇文章记录我在使用git的过程中碰到远程分支和tag的相关 ... -
Android应用程序组件Content Provider应用实例
2014-02-18 15:56 838上文简要介绍了Android应用程序组件Content P ... -
用Java集合中的Collections.sort方法对list排序的两种方法
2014-02-14 16:08 1064java List 排序 Collections.sort ... -
Java集合容器总结
2014-02-14 12:53 7402010-08-12 12:36:44| 分类: ... -
Git 常用命令详解(二)转
2014-02-14 11:34 650Git 是一个很强大的分 ... -
java 之 中文转拼音库 pinyin4j 转
2014-02-14 10:55 794Pinyin4j是一个流行的Java库,支持中文字符和拼音之 ... -
ant配置build.xml 指定多个classpath 编译多个src目录
2014-01-22 23:24 1626因为项目需求,需要自 ... -
[Andriod开发] 启动程序时不显示主Activity的方法
2013-08-30 03:43 1024需求场景: 在主画面上点击程序图标,启动程序时,不显示主A ... -
JSON for java入门总结
2013-06-26 16:58 742一、JSON介绍 JSON(JavaScript O ... -
Linux下显示tomcat控制台
2013-06-21 15:54 1044Linux下显示tomcat控制台 $TOMCAT_ ... -
java 字符串,字符数组,list间的转化
2013-06-19 16:44 9691.关于java.lang.string.split ... -
android JNI调用 - char*与jstring相互转换
2013-03-07 13:54 1831在使用jni调用时经常遇到数据类型转换问题,以下是char* ... -
定义函数数组
2012-10-26 11:29 757interface FunctionArrayInter ... -
JAVA对double或者float的浮点数精度计算控制方法
2012-10-23 10:31 1073★★★ 本篇为原创,需要引用转载的朋友请注明:《 http:/ ... -
Android中的sp和wp指针
2012-10-12 13:20 1042经常会在android的framework代码中发现sp ...
相关推荐
Java反射经典实例 Java反射经典实例 Java反射经典实例 Java反射经典实例
java反射经典实例 看完之后,基本满足你要做的事情,其中包括修改各种私有属性,调用私有方法的例子代码。简单干练。
代码主要实现了Java反射应用实例, 包含利用反射方法创建对象(使用默认构造函数和自定义构造函数),访问对应对象的方法(包括带参数的和不带参数的),访问对应对象的域(Field). 从这里可以看到代码的详细解说:...
反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc反射实例-JAVA反射机制.doc...
Java 反射机制 代码的实例 请认真阅读 运行此代码 只要读懂了 反射机制也就明白了
一个java普通工程,反射的所有方法和实例都有,,另外还有注释,可以帮助理解
Java 8个反射实例 项目实例 项目工程
Java反射实例,可以给初学反射的同志们一定帮助。一个简单实例,可以更好的理解反射的规矩。
一个java反射的例子,通过java反射机制,动态生成java实例,动态执行方法。例子中有大量注释,简单易懂。
Java反射动态加载实例类,动态加载实例类,帮助理解反射
Java反射经典实例 Java Reflection Cookbook[1].docx.pdf
Java反射实例源码,具体讲解内容见博客http://blog.csdn.net/liushuijinger 菜鸟学编程(九)——Java反射机制(一) 菜鸟学编程(十)——Java反射机制(二)
java反射实例
该资源包含了一个利用反射执行的一些操作,包含了动态执行构造方法,动态运行私有方法,为属性初始化等等,简单易懂。
java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名。本项目为普通java项目
Java反射机制总结(实例分析) Java反射机制学习笔记
java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象与类实例java对象...
1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息
本实例教程分反射对成员变量、构造器、方法操作,详尽而简略得列出反射机制的应用,希望对大家有用。