早期和晚期绑定有什么区别?
早期和晚期绑定有什么区别?
简短的回答是,早期(或静态)绑定是指编译时绑定,后期(或动态)绑定是指运行时绑定(例如,当您使用反射时)。
在编译语言中,差异是明显的。
Java的:
//early binding:
public create_a_foo(*args) {
return new Foo(args)
}
my_foo = create_a_foo();
//late binding:
public create_something(Class klass, *args) {
klass.new_instance(args)
}
my_foo = create_something(Foo);
在第一个例子中,编译器可以在编译时做各种各样的整齐的东西。 第二,你只需要希望谁使用这种方法是非常负责任的。 (当然,较新的JVM支持Class<? extends Foo> klass
结构,这可以大大降低这种风险。)
另一个好处是IDE可以链接到类定义,因为它在方法中声明。 对create_something(Foo)的调用可能与方法定义非常相似,如果您正在查看方法定义,则可能很高兴看到实现。
后期绑定的主要优势在于它使得控制反转更容易,以及多态性和鸭子键入的某些其他用途(如果您的语言支持这种情况)。
从http://word.mvps.org/fAQs/InterDev/EarlyvsLateBinding.htm直接取得
有两种方法可以使用自动化(或OLE自动化)以编程方式控制另一个应用程序。
后期绑定使用CreateObject来创建和实例化应用程序对象,然后您可以控制该对象。 例如,要使用迟绑定创建一个新的Excel实例:
Dim oXL As Object
Set oXL = CreateObject("Excel.Application")
另一方面,要操纵现有的Excel实例(如果Excel已经打开),您可以使用GetObject(无论您是使用早期还是晚期绑定):
Dim oXL As Object
Set oXL = GetObject(, "Excel.Application")
要使用早期绑定,首先需要在项目中将引用设置为要操作的应用程序。 在任何Office应用程序的VB编辑器中,或在VB本身中,通过选择工具+引用,然后从列表中选择所需的应用程序(例如“Microsoft Excel 8.0对象库”)来执行此操作。
使用早期绑定来创建Excel的新实例:
Dim oXL As Excel.Application
Set oXL = New Excel.Application
无论哪种情况,顺便提一句,您可以先尝试获取Excel的现有实例,如果返回错误,则可以在错误处理程序中创建新实例。
链接地址: http://www.djcxy.com/p/80327.html上一篇: What is the difference between Early and Late Binding?
下一篇: Query to determine which tables are currently being vacuumed?