記得以前有人報怨在java裡沒有類似delphi裡的class reference 用法,
比如在delphi裡可以這樣做
type
BaseClass = class
constructor Create; virtual;
...
end;
BaseClassRef = class of BaseClass
DerivedClass1 = class (BaseClass )
DerivedClass2 = class (BaseClass )
RegisterClass(DerivedClass1);
RegisterClass(DerivedClass2);
...
var
AClassRef : BaseClassRef ;
begin
//the class name can be stored in a configuration profile
AClassRef := BaseClassRef(FindClass('DerivedClass1'));
...
end;
現在, java裡的IOC架構PicoContainer也有類似的功能。比如
Interface BaseIntf
class DerivedClass1 implements BaseIntf
class DerivedClass2 implements BaseIntf
public void () {
MutablePicoContainer pico = createPicoContainer(null);
pico.registerComponentImplementation("DerivedClass1",DerivedClass1.class);
pico.registerComponentImplementation("DerivedClass2",DerivedClass2.class);
...
//the class name can be stored in a configuration profile
BaseIntf t = (BaseIntf) pico.getComponentInstance("DerivedClass2");
assertNotNull(t);
}
目前, pico也有.net portion