假设我有:
public interface A {
BigDecimal getAmountValue();
void setAmountValue(BigDecimal amountValue);
String getCurrency();
void setCurrency(String currency);
}
和
public class B implements A {
protected BigDecimal amount = BigDecimal.ZERO;
protected String currency;
public B() {
}
@Override
public BigDecimal getAmountValue() {
return amount;
}
@Override
public void setAmountValue(BigDecimal amountValue) {
amount = amountValue;
}
@Override
public String getCurrency() {
return currency;
}
@Override
public void setCurrency(String currency) {
this.currency = currency;
}
}
我想知道为什么org.springframework.util.ClassUtils.isAssignable(B, A) return false
。
在我的应用程序中,我使用了一个带有BeanUtils.copyProperties()
的推土机副本,我能够做到这一点,因为我试图将spring版本升级到3.2.9
现在,BeanUtils.copyProperties()
添加了ClassUtils.isAssignable()
,现在我的应用程序无法正常运行。
我真的不知道为什么它会返回虚假,我想在解决之前理解它......
感谢您的帮助!对不起,如果我的英语不正确,我不是原生的。
答案 0 :(得分:0)
来自doc:
isAssignable(java.lang.Class<?> lhsType, java.lang.Class<?> rhsType)
:检查右侧是否可以分配给左侧 侧面类型
记住这一点,
检查此基本示例ClassUtils.isAssignable(Object.class, String.class) = true
这是有道理的,因为每个字符串都是一个对象
但是ClassUtils.isAssignable( String.class,Object.class) = false
因为Object不是字符串类型