ClassCastException MValue的字符串,java 8

时间:2015-11-19 11:15:51

标签: java generics java-8 java-7 classcastexception

我有一个界面

public interface MValue extends SomeOtherInterface, Serializable

我在另一个界面中使用它

    public interface DomainObject extends Iterable<FieldValueAssociation>, Cloneable, Serializable {
     void add(DomainField field, MValue... values);
<T> T get(DomainField field);
    }

当我在其他课程中调用它时,我设置了

subDomain.add(DomainField.ZIP, d.get(DomainField.ZIP));

在java 7上这很好用,但是在java 8上我得到 java.lang.ClassCastException:java.lang.String不能强制转换为net.blabla.domain.MValue

d.get(DomainField.ZIP)应该返回String,它是,但它不能被转换为MValue,我不知道为什么?有人可以解释或推荐我一些文档。感谢。

1 个答案:

答案 0 :(得分:2)

这样做有用吗?

URLrewriteFilter

这里我明确地将subDomain.add(DomainField.ZIP, d.<String>get(DomainField.ZIP)); 的类型赋予T,但类型检查仍会发生,但它向编译器明确了预期的内容。 此调用应适用于Java 7和8。