Java类过滤器在自定义加载器中引用类时加载相同类的不同版本?

时间:2018-04-02 13:07:36

标签: java filter classloader

为了说明这个场景,我有一个名为com.test.A的类,同一个类将由不同的用户修改(例如:DEV1& DEV2),但是他们修改了各自的类,例如:com.test.DEV1 .A,com.test.DEV2.A

如果我使用自定义加载器并加载A类,是否有可能根据某些条件过滤A对DEV1.A或DEV2.A的引用?

2 个答案:

答案 0 :(得分:1)

如果不进一步了解问题我会说你试图在错误的地方解决这个问题。

这看起来更像是一个分支问题,应该使用SCM为您提供的功能在配置管理级别解决。请查看本文,了解如何正确处理不同的并行开发https://thedailywtf.com/articles/Source-Control-Done-Right

语气非常容易接触,我已成功使用它,以便为团队引入分支,我希望你喜欢它

答案 1 :(得分:0)

Class A {
    methodForUser1(params);
    methodForUser2(params);
    ....
    wrapperMethod(params) {
        if (context.user.equals(user1)) 
            methodForUser1(params);
        else if (context.user.equals(user2))
            methodForUser2(params)
        ....
    }
}

现在每个用户只需调用wrapperMethod,它将依次委托给用户在上下文中使用的正确方法。

这是一种蛮横的做法。此外,您可以使用反射加载方法。

另一种方法可能是@Jorge_B在另一个答案中提出的建议(维护不同的CI管道)