Java中类的转换接口
在Java中,有一个方法有一个参数,这个参数就是一个接口。使用这种方法,我可以对一个具体的类进行强制转换吗 我如何计算该演员表演的成本 示例-将接口转换为类:Java中类的转换接口,java,interface,casting,Java,Interface,Casting,在Java中,有一个方法有一个参数,这个参数就是一个接口。使用这种方法,我可以对一个具体的类进行强制转换吗 我如何计算该演员表演的成本 示例-将接口转换为类: public void convertToClass(IUser iu) { User u = (User) iu; } 正如在评论中所说的,实际上这不是性能问题,而是表达意图的问题:如果您需要特定的类,那么您应该需要它,而不是接口。但是,通常情况下,您可以需要一个接口,然后通过该接口进行操作,而完全
public void convertToClass(IUser iu) {
User u = (User) iu;
}
正如在评论中所说的,实际上这不是性能问题,而是表达意图的问题:如果您需要特定的类,那么您应该需要它,而不是接口。但是,通常情况下,您可以需要一个接口,然后通过该接口进行操作,而完全忽略强制转换。这也是通常应该做的事情。你应该探索这种可能性
至于实际问题:cast有一些开销,但在任何用例中都不重要。开销来自于检查强制转换是否可行,以及如果不可行则抛出异常。如果您有兴趣进一步讨论铸造的开销,您可以阅读更多关于它的内容。如果您不想测量开销,您应该使用中概述的方法,就像在一篇评论中所说的,实际上这不是性能问题,而是表达您的意图:如果您需要特定的类,您应该需要它,而不是接口。但是,通常情况下,您可以需要一个接口,然后通过该接口进行操作,而完全忽略强制转换。这也是通常应该做的事情。你应该探索这种可能性
至于实际问题:cast有一些开销,但在任何用例中都不重要。开销来自于检查强制转换是否可行,以及如果不可行则抛出异常。如果您有兴趣进一步讨论铸造的开销,您可以阅读更多关于它的内容。如果您不想测量开销,您应该使用中概述的方法,它与性能没有任何关系。这是一个设计问题。如果您接受
IUser
参数,然后将其强制转换为User
,则首先不应接受IUser
作为参数。您应该需要一个User
参数。@Kayaman-不过也有一个性能方面,因为编译器必须插入CHECKCAST
操作码。@OliverCharlesworth当然,但这是微观层面的东西。所呈现的代码没有多大意义。Kayamans的评论在很大程度上是正确的,但真正的设计问题是,您需要从User
访问IUser
界面未提供的内容。应尽可能避免强制转换,但不是出于性能原因。您应该避免强制转换,因为强制转换会降低代码的类型安全性。强制转换是一种绕过编译器类型检查的方法。Kayaman的建议很重要:如果方法需要User
对象,则将参数设置为User
类型,而不是IUser
。它与性能没有任何关系。这是一个设计问题。如果您接受IUser
参数,然后将其强制转换为User
,则首先不应接受IUser
作为参数。您应该需要一个User
参数。@Kayaman-不过也有一个性能方面,因为编译器必须插入CHECKCAST
操作码。@OliverCharlesworth当然,但这是微观层面的东西。所呈现的代码没有多大意义。Kayamans的评论在很大程度上是正确的,但真正的设计问题是,您需要从User
访问IUser
界面未提供的内容。应尽可能避免强制转换,但不是出于性能原因。您应该避免强制转换,因为强制转换会降低代码的类型安全性。强制转换是一种绕过编译器类型检查的方法。Kayaman的建议很重要:如果方法需要User
对象,则将参数设置为User
类型,而不是IUser
。