当前位置: 首页 > 面试题库 >

为什么套接字在运行时不是instanceof Closeable?

芮建茗
2023-03-14
问题内容

在一个Android应用中,我将此代码添加到 onCreate()

    Closeable sss = new Socket();
    if (!(sss instanceof Closeable)) {
        throw new RuntimeException("Something unexpected happened");
    }

进口是:

import java.io.Closeable;
import java.net.Socket;

代码可以编译,但是出现异常:

E/AndroidRuntime( 8293): java.lang.RuntimeException: Unable to start activity...: java.lang.RuntimeException: Something unexpected happened
...
E/AndroidRuntime( 8293): Caused by: java.lang.RuntimeException: Something unexpected happened
...

在不同的上下文中,故障会导致java.lang.ArrayStoreException(即
_java.lang.ArrayStoreException:java.net.Socket无法存储在类型为java.io.Closeable
[]的数组中_ )。

我想念什么吗?知道该怎么办吗?

编辑 类似,当DatagramSocket按原样MyClass<DatagramSocket>使用时MyClass<T extendsCloseable>,它会导致 java.lang.IncompatibleClassChangeError:接口未实现


问题答案:

在19之前的Android API级别上会发生此问题。在受影响的版本上,Socket不实现Closeable。

资料来源:

  • Android:与Socket一起使用Closeable接口的异常
  • https://code.google.com/p/android/issues/detail?id=62909


 类似资料:
  • 当我进行套接字编程时,我无法清楚地理解。 我的理解是 如果我使用此选项打开套接字,表示我可以在header之前创建自己的header,但最终数据以 /code>协议的格式发送。我的理解是正确的。如果错了,可以一些解释。 谢谢

  • 因为问题已经被问了很多次了,但我不能理解清楚。 根据提供的答案,JavaScript运行时意味着执行JavaScript代码的地方。 现在Nodejs的定义,它是一个异步的javascript运行时,这是否意味着在Nodejs内部执行javascript? 另外,javascript runtime environment,是指执行javascript代码的环境或机器设置吗? 对不起,我重复了我的

  • 在文档中,经常说“JavaFX运行时”在后台执行XY--但什么是“运行时”?如果我理解正确(请编辑),运行时由以下部分组成: null

  • 问题内容: 我们有一个Webstart客户端,它通过使用HTTPS通过HTTPS发送序列化对象来与服务器通信。 在本地计算机和办公室中的测试服务器上,一切都可以正常工作,但是我遇到了一个非常非常奇怪的问题,该问题仅在生产和登台服务器上出现(偶尔发生)。我知道这些服务器与我们办公室中的服务器之间的主要区别在于它们位于其他位置,并且与它们之间的客户端- 服务器通信速度相当慢,但在此之前的生产中也能正常

  • 问题内容: 我有一个客户端服务器程序在服务器端使用套接字,并且读写发生在这种方式 同样在cilent(android)方面… 问题是,建立连接后,程序会卡住它们,没有错误,也没有异常。停下来 问题答案: 这是一个死锁,您必须首先创建并刷新ObjectOutputStream。这是因为ObjectInputStream在继续操作之前先读取OOS发送的标头。

  • 我有一个Nodejs server.js代码: 我有一个带有java脚本的代码: 在中,我有: 当我在浏览器上打开时,这种方式运行良好。