用户类
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(unique=true)
private String username;
@JsonIgnore
private String password;
private String firstName;
private String lastName;
private Date dob;
private String motherName;
private String fatherName;
private String mobileNumber;
@Column(unique=true)
private String email;
@ManyToOne
@JoinColumn(name="role_id", nullable=false)
private Role role;
private String status;
public void setPassword(String password) {
this.password = PasswordEncoder.getEncodedPassword(password);
}
}
@Data
public class UserRequest {
private Long id;
private String username;
private String password;
private String firstName;
private String lastName;
private Date dob;
private String motherName;
private String fatherName;
private String mobileNumber;
private String email;
private Long role;
private String status;
}
public static void copy(Object dest, Object source) throws IntrospectionException, IllegalArgumentException, IllegalAccessException,
InvocationTargetException {
BeanInfo beanInfo = Introspector.getBeanInfo(source.getClass());
PropertyDescriptor[] pdList = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor pd : pdList) {
Method writeMethod = null;
Method readMethod = null;
try {
writeMethod = pd.getWriteMethod();
readMethod = pd.getReadMethod();
} catch (Exception e) {
}
if (readMethod == null || writeMethod == null) {
continue;
}
Object val = readMethod.invoke(source);
writeMethod.invoke(dest, val);
}
}
我把这个复制方法叫做
Utility.copy(user,userRequest);
并在执行writeMethod.invoke(dest,val)时获得以下异常。有人能帮忙吗?
对象不是在java.base/jdk.internal.reflect.nativeMethodAccessorImpl.Invoke0(原生方法)在java.base/jdk.internal.reflect.nativeMethodAccessorImpl.Invoke(nativeMethodAccessorImpl.java:64)在
您只获得源类的BeanInfo
,然后从该BeanInfo
...所以WriteMethod
是源类的setter,但您是在目标类的实例上调用它的。
您可能需要分别获得源类和目标类的BeanInfo
,然后对于源中的每个属性,在目标类中找到同名的属性(如果有的话),并使用该属性的write方法来设置值。
我的应用程序需要对Spring bean执行动态调用。我扫描Spring bean以查找带有自定义注释的方法,并存储对对象的引用,以备将来调用。 上面的代码将根据一个方法没有重载(按需求)的事实,按名称提取它。 但是,当我在后面的代码中尝试调用时,我得到了标题中描述的。 我所有的bean都是AOP代理,因为我使用Spring事务。 我使用以下代码获得变量,因为AOP代理不显示源类中注释 总而言之,
问题内容: 这个问题在Google上到处都有,但我仍然遇到问题。这就是我想要做的。因此,就像标题状态一样,我遇到了“对象不是声明类的实例”错误。有任何想法吗?谢谢! Main.java TestFunction.java 问题答案: 您正在使用该类调用该方法,但需要一个实例。试试这个:
问题内容: 我已经有一段时间没有接触过Mockito了,我也从未广泛使用它。但是今天,在一些新代码中,我想使用最佳实践,因此我使用以下Java版本退出了模仿内核2.0.54-beta: 我需要此接口的实例进行测试: https://bitbucket.org/globalmentor/rincl/src/bf0e8875a1bae16247dd904e0b8bc067c9f8abc9/src/ma
我有一段时间没有接触过Mockito,也从来没有大量使用过它。但是今天在一些新代码中,我希望使用最佳实践,所以我使用以下Java版本推出了mockito-core 2.0.54-beta: 要重现此问题,请克隆https://bitbucket.org/globalmentor/rincl.git并签出commit2f88d7c5e5ac17b6d316ed54c12cb7b447b7d6ac。然
我已经设置了一个Spring Boot项目,并使用castor xml依赖关系将POJO转换为xml。 在为POJO调用封送处理方法时遇到问题。我查阅了stackoverflow的其他相关问题,但没有一个能解决我的场景。 有一个toString方法,它位于Spring组件中。 以下是片段: 这是客户端内部的封送方法(castor之前自动生成的类): 以下是相同的堆栈跟踪: 这里需要注意的是,当我执
我有一个CookingEvent.class,它是Event.class的子类,hibernate继承策略是@ Inheritance(strategy = Inheritance type。已加入)。当我试图发送一个列表对象作为get响应时。我不例外 2016-08-25 11:49:22.351错误11944---[nio-8189-exec-1]o.a.c.c.c.[.[/]。[servle