Java:如何强制向上转换?

标签 java kryo kryonet

我正在使用 Kryo 库在 Java 中进行序列化。我有一个问题,我无法强制转换。这是一个示例情况:

class A {}
class B extends A {}

public save() {
    Kryo kryo = new Kryo();
    kryo.setRegistrationRequired(true); //force registration
    kryo.register(A.class); //register A with kryo
    Output output = new Output( ... );

    B bar = new B();
    kryo.writeObject(output, (A) bar); //try to cast it up
}

这会导致 class not registered 错误,因为 bar 仍然是 B 的实例。

有什么方法可以强制将 bar 强制转换为 A 的实例,或者我是否需要执行类似 new A(bar) ?

最佳答案

向上转型不会改变对象本身,只会改变指向它的引用的类型。您将必须注册 B.class.

关于Java:如何强制向上转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22291189/

相关文章:

java - 每个 http 请求的直接数据库连接与连接池 - 有什么区别

java - DataAccessException 无法转换为 SQLException 以获取错误代码和 sql 状态

java - 我的 Java 版 APImage 无法正常工作?

serialization - 如何在 Apache Spark 中向 Kryo Serializer 注册类?

java - 错误密码异常 : Bad user password

java - Tinkerpop 注册自定义类 kryo

java - 在 Spark 中配置函数/lambda 序列化

java - 将 Kryonet 与 Libgdx 结合使用

java - 如何通过 KryoNet 发送用户信息?

java - 如何使用 kryonet 客户端处理游戏对象更新