关于接口和类互相转换的问题!(关键词-class)

该问题来自社区帖: https://bbs.csdn.net/topics/617137540.

假设有一个interface的实例obj1,有一个class的实例obj2(class实现了该interface)

obj1 = obj2可以理解

那反过来如果想把obj2转换成obj1需要怎么写?另外这样做一般在是什么情况下?

引用 皆我百晓生 小程序回复内容作答:
要将一个类的实例转换为接口的实例,可以通过强制类型转换将其转换为接口类型。如下所示:

Interface obj1 = (Interface) obj2;

在这种情况下,如果类实现了该接口,并且类的实例也符合接口的要求,那么可以将类的实例转换为接口类型。这通常在以下情况下使用:

  1. 将具体实现类的实例转换为接口类型,以便在代码中使用接口的方法。这样做可以提高代码的灵活性和可维护性。

  2. 在方法参数或返回类型中使用接口类型,而不是具体的实现类类型。这样可以实现多态,并且可以在运行时决定使用哪个具体实现类。

  3. 在集合中存储接口类型的实例,以便统一处理这些实例。这样可以实现代码的扩展和维护。

需要注意的是,如果类实例不符合接口的要求,即使使用强制类型转换也会导致运行时异常。因此,在进行转换之前,应先进行类型检查或使用instanceof运算符进行判断。