我用类似的代码制作了服务器级Android应用程序,但我需要灵活地定制这些应用程序。我现在的解决方案是,我有一个库-项目,在那里我可以通过扩展类来覆盖项目中的功能。对于下面的示例,我称之为Library Project。P1是一个使用PL定制的项目,P2是另一个使用PL定制的项目。
我现在的问题是,在PL中,我想从StudentPL.java创建一个实例。在P1中,不需要对StudentPL做任何更改,所以编译器应该接受这个类,但是在P2中,我有从StudentPL.java扩展的StudentP2.java。因此,在PL中创建的实例应该是StudentP2.java的一个实例。
我现在的想法是,我制作了一个名为镜像的包,它直接在Project的src文件夹中。在这里,我创建了从mirror.Student.java扩展的类StudentPL.java。在Library-Project中,我现在将Student.java作为一个实例。对于Project P1,不需要进行任何更改。在P2中,我在src文件夹中创建了相同的文件夹镜像,现在我创建了从StudentP2.java扩展的相同的类mirror.Student.java。这样做的想法是,ClassLoader现在从P2加载mirror.Student.java,忽略PL中的mirror.Student.java,但这会导致以下错误:
下面是我所说的UML:
http://www.koenix-band.ch/images/other/Stackoverflow.gif
也许我应该重写ClassLoader,但我不知道如何做到这一点?有人想办法解决这个问题吗?也许有人有另外的想法,我可以如何定制应用程序。
迈克尔
发布于 2013-02-19 15:17:07
在我看来,最好用一个MainActivityPL或类似的方法来抽象您的setStudent。大部分活动及其所有逻辑仍将从库中共享,但它将允许您的其他项目通过扩展StudentPL类来使用不同的学生对象。
https://stackoverflow.com/questions/14960569
复制相似问题