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
不,不是。
- 这是一个编译错误,它发生在编译时 编译代码 . 当 'deserializing'.
时不
- 该错误根本与反序列化无关:它与迭代有关。
- 这是错误,不是警告,因此禁止警告的注释无关紧要。
错误信息中清楚地说明了问题。由于您没有提供 class 的完整源代码,甚至没有提供它发生的方法,因此不可能进一步可靠地进行下去。
不过我会猜测:
- 第一个方法是
SetOfMember
的成员
SetOfMember
在 <Member extends Object>
上参数化。
... 这将完全解释错误消息。问题是静态方法 deserializeMembers()
实际上不是通用的。解决方法是通用化 deserializeMembers()
方法:
public static <Member extends Object> SetOfMember<Member> deserializeMembers() throws ...
我的第一个猜测是
- 顶部和底部的代码在不同的文件中
- 在您导入的 "top" 文件中(很可能是 IDE 建议)一些其他
Member
class 例如 java.lang.reflect.Member
而不是您的 library.Member
因此你有这个错误。
因此,要解决此问题 - 请检查第一个图块中的导入部分。
如果您确实需要在同一个文件中同时使用 Member
class,您仍然可以使用完全限定名称。我敢打赌下面的代码无论如何都会起作用。
for(library.Member mem : Serialization.deserializeMembers())
我正在尝试反序列化 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
不,不是。
- 这是一个编译错误,它发生在编译时 编译代码 . 当 'deserializing'. 时不
- 该错误根本与反序列化无关:它与迭代有关。
- 这是错误,不是警告,因此禁止警告的注释无关紧要。
错误信息中清楚地说明了问题。由于您没有提供 class 的完整源代码,甚至没有提供它发生的方法,因此不可能进一步可靠地进行下去。
不过我会猜测:
- 第一个方法是
SetOfMember
的成员
SetOfMember
在<Member extends Object>
上参数化。
... 这将完全解释错误消息。问题是静态方法 deserializeMembers()
实际上不是通用的。解决方法是通用化 deserializeMembers()
方法:
public static <Member extends Object> SetOfMember<Member> deserializeMembers() throws ...
我的第一个猜测是
- 顶部和底部的代码在不同的文件中
- 在您导入的 "top" 文件中(很可能是 IDE 建议)一些其他
Member
class 例如java.lang.reflect.Member
而不是您的library.Member
因此你有这个错误。
因此,要解决此问题 - 请检查第一个图块中的导入部分。
如果您确实需要在同一个文件中同时使用 Member
class,您仍然可以使用完全限定名称。我敢打赌下面的代码无论如何都会起作用。
for(library.Member mem : Serialization.deserializeMembers())