标签: static-dispatch

Java中的Binding和Dispatching有什么区别?

关联名称太多:早期和晚期绑定,静态和动态调度,运行时与编译时多态等等,我不明白其中的区别.

我找到了明确的解释,但这是正确的吗?我会解释JustinC:

绑定:是确定变量的类型(对象?).如果它在编译时完成,它的早期绑定.如果它是在运行时完成的,那就是后期绑定.

Dispatch:确定哪个方法与方法调用匹配.Static Dispatch是编译时的计算方法,而动态调度是在运行时执行的.

绑定是否将原始值和引用变量分别与原始值和对象进行匹配?

编辑:请给我一些明确的参考资料,以便我可以阅读更多相关信息.

java late-binding dynamic-dispatch early-binding static-dispatch

7
推荐指数
1
解决办法
837
查看次数

Rust trait 有运行时开销吗?

如果我在下面的代码中创建c1类型Concrete1,是否有任何运行时开销?

pub trait ExampleTrait {
    fn foo(&self);
}

pub struct Concrete1 {}

impl ExampleTrait for Concrete1 {
    fn foo(&self) {}
}

pub struct Concrete2 {}

impl ExampleTrait for Concrete2 {
    fn foo(&self) {}
}

fn main() {
    let c1 = Concrete1 {};
    c1.foo();
}
Run Code Online (Sandbox Code Playgroud)

这是否需要任何类型的 v 表查找或任何其他类型的开销?我想要一个特征,以便我可以在编译时强制执行Concrete1Concrete2实现相同的方法集。

我将静态选择在主程序中使用哪种具体类型;这两个实现的存在只是为了在需要时我可以使用 trait 的替代实现。

traits dynamic-dispatch rust static-dispatch

0
推荐指数
1
解决办法
351
查看次数