Java 列表反序列化并返回对象会出现不兼容类型错误

Java List deserializing and returning an object gives Incompatible types error

我正在尝试反序列化 SetOfMembers 列表,我想在反序列化后单独获取每个成员对象,以便将成员名称与给定的字符串匹配。

"Incompatible types librarby.Member cannot be converted to Member where Member is a type-variable. Member extends Object declared in class SetOfMembers"

上面的错误不断出现,我无法找出我的问题 code.If 你可以向我解释我的代码有什么问题,那会很棒。我使用了 @SuppressWarnings("unchecked") 但这没有帮助 either.Please。谢谢

Java List deserializing and returning an object gives Incompatible types error

不,不是。

  1. 这是一个编译错误,它发生在编译时 编译代码 . 当 'deserializing'.
  2. 时不
  3. 该错误根本与反序列化无关:它与迭代有关。
  4. 这是错误,不是警告,因此禁止警告的注释无关紧要。

错误信息中清楚地说明了问题。由于您没有提供 class 的完整源代码,甚至没有提供它发生的方法,因此不可能进一步可靠地进行下去。

不过我会猜测

  • 第一个方法是SetOfMember
  • 的成员
  • SetOfMember<Member extends Object> 上参数化。

... 这将完全解释错误消息。问题是静态方法 deserializeMembers() 实际上不是通用的。解决方法是通用化 deserializeMembers() 方法:

public static <Member extends Object> SetOfMember<Member> deserializeMembers() throws ...

我的第一个猜测是

  1. 顶部和底部的代码在不同的文件中
  2. 在您导入的 "top" 文件中(很可能是 IDE 建议)一些其他 Member class 例如 java.lang.reflect.Member 而不是您的 library.Member 因此你有这个错误。

因此,要解决此问题 - 请检查第一个图块中的导入部分。

如果您确实需要在同一个文件中同时使用 Member class,您仍然可以使用完全限定名称。我敢打赌下面的代码无论如何都会起作用。

for(library.Member mem : Serialization.deserializeMembers())