ClassCastException 字符串到 MValue,java 8
ClassCastException String to MValue, java 8
我有接口
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);
}
当我在其他 class 中调用它时,我设置
subDomain.add(DomainField.ZIP, d.get(DomainField.ZIP));
在 java 7 这工作正常,但在 java 8 我得到 java.lang.ClassCastException: java.lang.String cannot be cast to net.blabla.domain.MValue
d.get(DomainField.ZIP)
应该是 return 字符串,确实是,但是不能转换为 MValue,我不知道为什么?有人可以解释或推荐我参考一些文档吗?谢谢。
那有用吗?
subDomain.add(DomainField.ZIP, d.<String>get(DomainField.ZIP));
这里我明确指定 T
的类型为 String
,类型检查仍然会发生,但它向编译器明确了预期的内容。
此调用应该适用于 Java 7 和 8。
我有接口
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);
}
当我在其他 class 中调用它时,我设置
subDomain.add(DomainField.ZIP, d.get(DomainField.ZIP));
在 java 7 这工作正常,但在 java 8 我得到 java.lang.ClassCastException: java.lang.String cannot be cast to net.blabla.domain.MValue
d.get(DomainField.ZIP)
应该是 return 字符串,确实是,但是不能转换为 MValue,我不知道为什么?有人可以解释或推荐我参考一些文档吗?谢谢。
那有用吗?
subDomain.add(DomainField.ZIP, d.<String>get(DomainField.ZIP));
这里我明确指定 T
的类型为 String
,类型检查仍然会发生,但它向编译器明确了预期的内容。
此调用应该适用于 Java 7 和 8。