在Java中,有一个方法有一个参数,这个参数是一个接口。使用这样的方法我可以对一个具体的类进行演员吗?
如何计算演员表演的成本呢?
示例 - 将接口转换为类:
public void convertToClass(IUser iu) {
User u = (User) iu;
}
答案 0 :(得分:4)
就像在评论中所说的那样,在实践中,它不是表现的问题,而是表达你的意图:如果你需要一个特定的类,你应该要求,而不是接口。但是,通常情况是您可以要求接口然后通过该接口进行操作,完全省略了转换。这也是通常应该完成的方式。你应该探索这种可能性。
关于实际问题:演员有一些开销,但在任何用例中它都不重要。开销来自检查是否可以进行强制转换,如果不是则抛出异常。如果您对有关投射开销的进一步讨论感兴趣,可以阅读更多相关信息here。如果您不想测量开销,则应使用How do I write a correct micro-benchmark in Java?
中列出的方法