delphi的class reference 和java的IOC

记得以前有人报怨在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