B4A项目出现ClassCastException异常,请求技术帮助
B4A中java.lang.ClassCastException异常解决
异常信息
java.lang.ClassCastException: java.lang.Object cannot be cast to java.lang.Boolean
问题原因
异常触发在Wait For (AddMembers.Invoke(Dir, FileName)) Complete (Result As Boolean)行。你的AddMembers.Invoke方法直接返回了File.CopyAsync的执行结果,但File.CopyAsync返回的是AsyncStreams对象,并非Boolean类型。调用方试图将该对象强制转为Boolean时,就会抛出类型转换异常。
解决方案
修改AddMembers模块的Invoke方法,正确等待异步操作完成后返回布尔结果:
Public Sub Invoke(Dir As String, FileName As String) As ResumableSub Dim copySuccess As Boolean = False Try ' 等待文件复制异步操作完成,获取布尔结果 Wait For (File.CopyAsync(Dir, FileName, Members.MembersDir, Members.MembersFile)) Complete (Result As Boolean) copySuccess = Result Catch ' 捕获复制过程中的异常,标记操作失败 copySuccess = False End Try Return copySuccess End Sub
说明
File.CopyAsync是异步方法,必须通过Wait For等待其执行结束,才能拿到布尔类型的执行结果。- 增加
Try-Catch块可以处理文件不存在、权限不足等异常场景,确保方法始终返回有效的Boolean值,避免后续逻辑出错。
内容的提问来源于stack exchange,提问作者dev.tejasb
相关产品推荐
相关产品推荐

