在Java中使用类转换接口

时间:2017-12-30 11:18:36

标签: java interface casting

在Java中,有一个方法有一个参数,这个参数是一个接口。使用这样的方法我可以对一个具体的类进行演员吗?

如何计算演员表演的成本呢?

示例 - 将接口转换为类:

public void convertToClass(IUser iu) {          
        User u = (User) iu;
}

1 个答案:

答案 0 :(得分:4)

就像在评论中所说的那样,在实践中,它不是表现的问题,而是表达你的意图:如果你需要一个特定的类,你应该要求,而不是接口。但是,通常情况是您可以要求接口然后通过该接口进行操作,完全省略了转换。这也是通常应该完成的方式。你应该探索这种可能性。

关于实际问题:演员有一些开销,但在任何用例中它都不重要。开销来自检查是否可以进行强制转换,如果不是则抛出异常。如果您对有关投射开销的进一步讨论感兴趣,可以阅读更多相关信息here。如果您不想测量开销,则应使用How do I write a correct micro-benchmark in Java?

中列出的方法