我有一个库类,即我从JAR加载的类,源代码在我的控制范围之外。我们在项目的多个地方实例化它,并且应该始终设置创建对象的属性。不幸的是,该库没有中央设置,因此我创建了一个子类:
public class MyClass extends LibraryClass {
public MyClass() {
super();
super.setSomeProperty();
}
}
然后我用MyClass替换了LibraryClass的所有实例。它工作正常,但我想防止自己和同事将来实例化LibraryClass。
是否可以将Maven或Eclipse或其他某种方式将LibraryClass(或其构造函数)标记为已弃用?这将是一个编译时的解决方案。
或者是否有可能在运行时使用一些Spring / Aop魔术将所有实例化的LibraryClass替换为MyClass?
由于您提到将构造函数标记为已弃用(实际上不会禁止使用)-如果使用的是声纳,则可以创建自己的规则,将使用情况标记为错误,例如子类。
如果您在应用程序中使用Spring,并且所有bean实例化都通过Spring完成,请在应用程序启动时检查是否存在类型为LibraryClass
的bean。抛出异常(如果存在)。可以为用于bean实例化的任何其他框架实现类似的解决方案。