3

我正在开发一个会有很多贡献的 java 应用程序。我希望单个包中的类能够以某种方式“自我注册”。目前,我们有另一个类,它们只是简单地将每个类添加到这样的列表中:

ourlist.add( new SomeClassName() );

这要求每个贡献者为他们的添加添加这样的一行,我想避免这样做。我想让应用程序扫描包,并自动将每个类添加到上面的列表中。

我已经尝试对包使用一些类扫描代码,但类类型不能很好地与我们的类类型配合使用,而且我对 java 太陌生,无法完全理解这个问题。

4

2 回答 2

0

运行时还是静态?运行时您可以在类中使用静态块并将代码放在静态块中以注册自己。就像 JDBC 驱动程序的工作方式和向驱动程序管理器注册一样。

于 2012-06-13T05:34:07.277 回答
0

扫描包以获取所有类名并使用Reflection每个类的创建实例添加到list

for(Class claszz: scannedClasses){
 list.add(clazz.newInstance());//default constructor
}
于 2012-06-13T05:36:06.047 回答