强制转换为不继承的类型



我有一个class比如

public class Magic implements Serializable{
}

,这个类不继承

public class Amount{
}

是否有办法将Magic转换为Amount,我将不会访问任何字段,我只需要魔法"成为"金额?有办法吗?

没有。Amount实例Magic实例无关。

这是正确的,即使两个类看起来相同,但在你的例子中它们肯定不是。

在这种情况下,您需要忍受编写代码将Magic转换为Amount的痛苦。可以在Amount中有一个构造函数,以Magic实例作为参数。

或者,如果Amount只包含函数,那么考虑将其重铸为interface,这由Magic实现。

在Java中不能在不相关的类型之间进行强制转换。如果您需要从Magic实例创建Amount实例,您应该有一个接收这样一个参数的构造函数:

public class Amount {
    public Amount(Magic m) {
        // Initialize amount's fields...
    }
}

强制类型转换不会自动将对象从一种类型转换为另一种类型。

强制类型转换是一种禁用编译器类型检查的方法。强制类型转换所做的唯一一件事就是告诉编译器:"这是一个对象,我比你更清楚这是什么类型的对象,所以我希望你把它当作这种类型的对象来对待,不要抱怨"。

在运行时仍然会进行类型检查,如果此时对象确实不是您所说的类型,您将得到一个ClassCastException

强制类型转换不能自动将Magic对象转换为Amount对象。

您需要自己编写代码来使用Magic对象的数据创建Amount对象。

Magic成为Amount的唯一方法是让您的类:Magic扩展Amount类。

你想在类之间建立一个is a链接,这是通过继承来实现的。

相关内容

  • 没有找到相关文章