实现无法从Interface分配?

时间:2018-03-13 15:22:46

标签: java spring interface

假设我有:

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(),现在我的应用程序无法正常运行。

我真的不知道为什么它会返回虚假,我想在解决之前理解它......

感谢您的帮助!对不起,如果我的英语不正确,我不是原生的。

1 个答案:

答案 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不是字符串类型