我们是否可以阻止自己从导入的库实例化Java类

问题描述 投票:3回答:2

我有一个库类,即我从JAR加载的类,源代码在我的控制范围之外。我们在项目的多个地方实例化它,并且应该始终设置创建对象的属性。不幸的是,该库没有中央设置,因此我创建了一个子类:

public class MyClass extends LibraryClass {
    public MyClass() {
        super();
        super.setSomeProperty();
    }
}

然后我用MyClass替换了LibraryClass的所有实例。它工作正常,但我想防止自己和同事将来实例化LibraryClass。

是否可以将Maven或Eclipse或其他某种方式将LibraryClass(或其构造函数)标记为已弃用?这将是一个编译时的解决方案。

或者是否有可能在运行时使用一些Spring / Aop魔术将所有实例化的LibraryClass替换为MyClass?

java eclipse maven deprecated
2个回答
0
投票

由于您提到将构造函数标记为已弃用(实际上不会禁止使用)-如果使用的是声纳,则可以创建自己的规则,将使用情况标记为错误,例如子类。


0
投票

如果您在应用程序中使用Spring,并且所有bean实例化都通过Spring完成,请在应用程序启动时检查是否存在类型为LibraryClass的bean。抛出异常(如果存在)。可以为用于bean实例化的任何其他框架实现类似的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.