我正在开发一个有很多贡献的Java应用程序。我希望在一个包中的类以某种方式“自我注册”自己。目前,我们还有另一个类,只需将每个类添加到类似的列表中:
ourlist.add( new SomeClassName() );
这要求每个贡献者为我们想要避免的添加添加这样的行。我想让应用程序扫描包,并自动将每个类添加到列表中,如上所述。
我已经尝试过使用一些类扫描代码来获取软件包,但类型类型并不适合我们的类型,而且我对java来说太新了,无法完全理解这个问题。
答案 0 :(得分:0)
运行时还是静态? 运行时可以在类中使用静态块,并将代码放在侧面静态块中进行自我注册。就像JDBC驱动程序的工作方式和向drivermanager注册一样。
答案 1 :(得分:0)
Scan the package to get all class name并使用Reflection
创建每个实例以添加到list
for(Class claszz: scannedClasses){
list.add(clazz.newInstance());//default constructor
}