使用getWriteMethod() 为类的属性赋值。
一、普通类如下:
public class MyBean {
private String id = null;
private String userName = null;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
二、测试类如下:
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class MethodWrite {
private MyBean beanObj = null;
private BeanInfo bBeanObjInfo = null;
public void TestMethodInvoke(){
Map userMap = new HashMap();
userMap.put("id", "1001");
userMap.put("userName", "isoftstone");
try{
//实例化一个Bean
beanObj = new MyBean();
//依据Bean产生一个相关的BeanInfo类
bBeanObjInfo = Introspector.getBeanInfo(beanObj.getClass());
PropertyDescriptor[] propertyDesc = bBeanObjInfo.getPropertyDescriptors();
for (int i = 0; i < propertyDesc.length; i++) {
if (propertyDesc[i].getName().compareToIgnoreCase("class")==0) continue;
//System.out.print(propertyDesc[i].getName());
String strValue = (String)userMap.get((String)propertyDesc[i].getName());
//System.out.println(strValue);
if(strValue != null){
Object[] oParam = new Object[]{};
Method mr = propertyDesc[i].getWriteMethod();
if( mr != null){
oParam = new String[]{(strValue)};
try{
//注意这里的参数。
mr.invoke(beanObj, oParam);
}catch(IllegalArgumentException iea){
System.out.println("参数错误。");
iea.printStackTrace();
}
}
}
}
System.out.println(beanObj.getId());
System.out.println(beanObj.getUserName());
}catch(IntrospectionException e){
System.out.println("Java Bean 内省异常。");
}catch(IllegalAccessException ia){
System.out.println("参数异常。");
ia.printStackTrace();
}catch(InvocationTargetException ie){
System.out.println("invode异常。");
ie.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
new MethodWrite().TestMethodInvoke();
}
}
分享到:
相关推荐
标题中的问题“scrcpy投屏 AssertionError: java.lang.reflect.InvocationTargetException”是用户在尝试使用Scrcpy时遇到的一个常见错误。这个错误通常意味着在执行某个方法时,Java运行时环境遇到了未预期的情况。...
`InvocationTargetException`通常作为Java标准库中的`java.lang.reflect.Method.invoke()`方法的异常包装器。当目标方法抛出异常时,`invoke()`会捕获这个异常并封装为`InvocationTargetException`,然后将其抛出。...
java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码 java.lang.reflect.Proxy 学习资料 讲解 例子 源码
在Java编程语言中,`java.lang.reflect`包是核心库的一部分,它提供了运行时访问类、接口、字段和方法的能力。这个包对于理解和操作对象的动态特性至关重要,尤其是在实现反射机制时。反射允许我们在程序运行期间...
在WebLogic Server 9.2至10.0版本中,用户可能会遇到一个特定的错误,即“java.lang.AssertionError: Registered more than one instance with the same objectName”。这个错误主要表现为服务器启动后,在Admin ...
MyEclipse axis2 wsdl java.lang.reflect.invocationtargetexception code gen 大家要注意一定要仔细,这个问题基本上缺少包引起的,而且一定要clean 如果需要axis2插件 以及这个plugins中的包在我的其他资源里面有
免费共享,很详细的介绍了反射机制的原理,适合追根究底的java学习者
`org.apache.commons.lang3.reflect.FieldUtils`类则是关于反射操作的工具类,它提供了一些安全且方便的方法来访问和修改对象的字段。这些方法包括但不限于: 1. `getField()`:安全地获取类或对象的字段,即使该...
at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run...
java.lang.ExceptionInInitializerError Caused by: java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.read(ImageIO.java:1388) at com.pleanwar.fiying.FlyingObject.loadImage...
3. **Java动态代理**:基于`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`,实现对目标对象的代理,用于拦截方法调用。 综上所述,`NoSuchMethodException`是Java编程中需要关注的一个重要异常...
编写basedao的时候报错:java.lang.Class cannot be cast to java.lang.reflect.Parameterized
java.lang.NullPointerException ... at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.tomcat.websocket.pojo.PojoMessageHandlerWholeBase.onMessage(PojoMessageHandlerWholeBase.java:80)
Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.Access...
4. **`java.lang.reflect.Method`**:表示类的方法。 5. **`java.lang.reflect.Modifier`**:提供对成员的修饰符的访问。 ##### 基本使用方法 1. **获取成员方法信息**: - `Method[] getMethods()`:获取公开的...
`NoSuchMethodException`属于`java.lang.reflect`包,当反射API试图查找一个指定签名的方法而该方法不存在于目标类中时,会抛出此异常。这意味着在编译时存在该方法,但在运行时却由于某种原因(如类加载问题、方法...
Class 类代表了 Java 中的一个类,而 java.lang.reflect 包提供了许多反射类,例如 Constructor、Method、Field 等。 Constructor 类代表了某个类中的一个构造方法。例如,我们可以使用 Class.forName("java.lang....
1. 动态代理:使用`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`可以创建动态代理对象,实现AOP(面向切面编程)。 2. 数据库操作框架:如MyBatis,通过反射动态生成SQL语句并执行。 3. XML...
其中最经常使用的是三个类:java.lang.reflect.Field类、java.lang.reflect.Method类和java.lang.reflect.Constructor类。 Java.lang.reflect.Field类提供了有关类或接口的单个域的信息。利用这个类,我们可以得到...