我只是在学习java,而我遇到了一些问题。 下面我们就简单工厂模式:自动工厂注册
public class SomeFactory {
...
public static void registerProduct(String name, Class<? extends IProduct > f)
}
public SomeProduct implements IProduct {
static {
SomeFactory.register("some product", SomeProduct.class);
}
...
}
所有产品应该在出厂登记。
但是在使用此代码之前,应该加载所有的产品类。 我可以把Class.forName()
放在某个地方,例如在main函数中。 但我想避免这样的手动类加载。我只想添加新的IProduct
实现,而不更新其他部分(如SomeFactory
或Main
方法等)。 但我想知道,是否可以自动加载一些类(例如标注了注释)?
P.S我想要注意的是,在运行时不会添加其他类,所有IProduct
实现在编译之前都已知。
UPD#1 感谢您的回答! 但是有可能使用IProduct
实例自动生成属性文件? 我的意思是可以制作一些生成属性文件或加载程序代码的构建时脚本(例如,用于maven)?有没有这样的解决方案或框架?
UPD#2 我完成使用Reflections library,其提供运行时信息,通过在启动时扫描类路径。
怎么是'this.getClass()'将在'静态{}'...工作O_O? –