- 浏览: 825246 次
- 性别:
- 来自: 哈尔滨
文章分类
最新评论
-
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 762目录 介绍 实例 总结 参考资料 介绍 Sp ... -
java线程中yield(),sleep(),wait()区别详解
2014-09-03 13:23 6601、sleep() 使当前线程(即调用该方法的线程)暂停执 ... -
线程方法 joine
2014-09-02 11:51 710Example1: Java代码 ... -
Java transient关键字
2014-06-24 15:46 498Volatile修饰的成员变量在每次被线程访问时,都强迫从主内 ... -
Android EditText不弹出输入法焦点问题的总结
2014-02-27 01:24 917同样的代码,碰到有EditText控件的界面时有的机 ... -
GIT查看、删除、重命名远程分支和TAG
2014-02-20 09:47 1147这篇文章记录我在使用git的过程中碰到远程分支和tag的相关 ... -
Android应用程序组件Content Provider应用实例
2014-02-18 15:56 881上文简要介绍了Android应用程序组件Content P ... -
用Java集合中的Collections.sort方法对list排序的两种方法
2014-02-14 16:08 1089java List 排序 Collections.sort ... -
Java集合容器总结
2014-02-14 12:53 7722010-08-12 12:36:44| 分类: ... -
Git 常用命令详解(二)转
2014-02-14 11:34 684Git 是一个很强大的分 ... -
java 之 中文转拼音库 pinyin4j 转
2014-02-14 10:55 823Pinyin4j是一个流行的Java库,支持中文字符和拼音之 ... -
ant配置build.xml 指定多个classpath 编译多个src目录
2014-01-22 23:24 1680因为项目需求,需要自 ... -
[Andriod开发] 启动程序时不显示主Activity的方法
2013-08-30 03:43 1062需求场景: 在主画面上点击程序图标,启动程序时,不显示主A ... -
JSON for java入门总结
2013-06-26 16:58 771一、JSON介绍 JSON(JavaScript O ... -
Linux下显示tomcat控制台
2013-06-21 15:54 1075Linux下显示tomcat控制台 $TOMCAT_ ... -
java 字符串,字符数组,list间的转化
2013-06-19 16:44 9941.关于java.lang.string.split ... -
android JNI调用 - char*与jstring相互转换
2013-03-07 13:54 1864在使用jni调用时经常遇到数据类型转换问题,以下是char* ... -
定义函数数组
2012-10-26 11:29 789interface FunctionArrayInter ... -
JAVA对double或者float的浮点数精度计算控制方法
2012-10-23 10:31 1122★★★ 本篇为原创,需要引用转载的朋友请注明:《 http:/ ... -
Android中的sp和wp指针
2012-10-12 13:20 1090经常会在android的framework代码中发现sp ...
相关推荐
代码主要实现了Java反射应用实例, 包含利用反射方法创建对象(使用默认构造函数和自定义构造函数),访问对应对象的方法(包括带参数的和不带参数的),访问对应对象的域(Field). 从这里可以看到代码的详细解说:...
在提供的"java反射实例代码"中,应该包含了如何使用上述方法的实际示例,这些示例有助于加深对Java反射机制的理解。通过阅读和运行这些代码,开发者可以更直观地学习如何在程序运行时动态地操作类、方法和字段,从而...
Java反射是Java编程语言中的一个重要特性,它允许程序在...学习这个示例,你可以更好地掌握Java反射机制,如何实例化对象,调用方法以及访问字段。通过实践,你将能够灵活地应用反射到实际项目中,解决动态编程的需求。
以下将详细介绍Java反射的8个关键实例。 1. 获取Class对象 要使用反射,首先需要获取到目标类的Class对象。这可以通过以下几种方式实现: - 使用`Class.forName()`方法,如`Class<?> clazz = Class.forName("全...
### Java反射机制简介 Java反射机制是Java编程语言的一个强大特性,它允许程序在运行时检查自身,并且能够“看”到类的信息(字段、方法等),甚至可以在运行时调用这些方法或修改这些字段的值。这为开发带来了很大...
在标题“Java反射应用实例”中,我们关注的是如何在实际项目中利用反射来实现特定的功能。这篇博客文章(可以通过链接访问)可能会探讨以下几个方面: 1. **什么是反射**:首先,我们需要理解反射的基本概念。反射...
Java 反射机制实例详解 Java 反射机制实例详解是一种动态语言机制,允许在程序运行时加载、探知和使用编译期间完全不知道的类、生成其对象实体,调用其方法或者对属性设值。下面是 Java 反射机制实例详解的知识点:...
Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用私有方法...
下面我们将深入探讨如何利用Java反射API实现这些功能。 首先,要使用反射API,我们需要导入`java.lang.reflect`包中的几个关键类:`Class`、`Constructor`、`Method`和`Field`。这些类分别代表类对象、构造器对象、...
在标题“Java反射实例”中,我们聚焦于如何在实际编程中应用这一特性。通过反射,我们可以动态地获取类的信息,如类名、方法名、字段名,甚至可以在运行时创建和调用对象。这对于实现元编程、插件系统、序列化、单元...
Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...
Java 反射机制详解 Java 反射机制是 Java 语言提供的一种强大的工具,它允许程序在运行时动态地获取类的信息(如类名、属性、方法等)并进行操作。这种能力使得 Java 应用程序更加灵活,能够在运行时发现和修改自身...
三、Java反射实例 1. 创建对象:通过`Class.newInstance()`创建默认构造器的对象,或`Constructor.newInstance()`创建指定构造器的对象。 ```java Class<?> clazz = Class.forName("com.example.MyClass"); MyClass ...
以下是对"Java反射实例"的详细解释: 1. **获取Class对象** 要使用反射,首先需要获取到对应的`Class`对象。这可以通过以下三种方式实现: - 使用`Class.forName()`方法,传入类的全名(包括包名)。 - 对象的`...
java源码包J实例源码JAVA开发源码55个合集: Java中的Blowfish对称密钥加密算法类和实例.rar Java中的EJB编程实例代码.rar Java中的SSL及HTTPS协议实例源码.rar Java写的ATM机取款模拟程序.zip Java写的一个mp3播放器...
本实例教程分反射对成员变量、构造器、方法操作,详尽而简略得列出反射机制的应用,希望对大家有用。
在标题和描述中提到的"java反射实例"是一个简单的入门程序,旨在演示如何使用反射来操作JavaBean的get和set方法。 首先,让我们理解JavaBean。JavaBean是一种符合特定规范的Java类,通常具有公有的getter和setter...
### Java反射性能测试分析 #### 引言 Java反射机制是Java编程语言中一个强大的特性,它允许程序在运行时动态地访问、检测和修改类、接口、字段和方法等对象。然而,反射操作通常会引入额外的开销,这在性能敏感的...
几个Java反射和动态代理的小例子。可以学习如何通过Java的反射机制实例化对象、调用对象的方法、操作对象的私有成员变量、改变数组中的某项的值、改变数组大小等;可以学习Java的动态代理模式、学习Java工厂模式以及...