我正在开发一个会有很多贡献的 java 应用程序。我希望单个包中的类能够以某种方式“自我注册”。目前,我们有另一个类,它们只是简单地将每个类添加到这样的列表中:
ourlist.add( new SomeClassName() );
这要求每个贡献者为他们的添加添加这样的一行,我想避免这样做。我想让应用程序扫描包,并自动将每个类添加到上面的列表中。
我已经尝试对包使用一些类扫描代码,但类类型不能很好地与我们的类类型配合使用,而且我对 java 太陌生,无法完全理解这个问题。
我正在开发一个会有很多贡献的 java 应用程序。我希望单个包中的类能够以某种方式“自我注册”。目前,我们有另一个类,它们只是简单地将每个类添加到这样的列表中:
ourlist.add( new SomeClassName() );
这要求每个贡献者为他们的添加添加这样的一行,我想避免这样做。我想让应用程序扫描包,并自动将每个类添加到上面的列表中。
我已经尝试对包使用一些类扫描代码,但类类型不能很好地与我们的类类型配合使用,而且我对 java 太陌生,无法完全理解这个问题。
运行时还是静态?运行时您可以在类中使用静态块并将代码放在静态块中以注册自己。就像 JDBC 驱动程序的工作方式和向驱动程序管理器注册一样。
扫描包以获取所有类名并使用Reflection
每个类的创建实例添加到list
for(Class claszz: scannedClasses){
list.add(clazz.newInstance());//default constructor
}