defaultCacheResolverFactory

defaultCacheResolverFactory

我在第3方库中有一个Java类,带有一个在类实例化时分配的私有成员。

public class CacheLookupUtil extends AbstractCacheLookupUtil<InvocationContext> {
  @Inject
  private BeanManagerUtil beanManagerUtil;

  private CacheKeyGenerator defaultCacheKeyGenerator = new DefaultCacheKeyGenerator();
  private CacheResolverFactory defaultCacheResolverFactory = new DefaultCacheResolverFactory();

  ...
  ...
}

我的问题是defaultCacheResolverFactory的分配由于选择了错误的构造函数而导致异常。

如果我尝试对CacheLookupUtil进行子类化,则该赋值仍在父类中完成,因此我无法再前进了。

我可以在Java反射中使用任何机制来构造/实例化该对象,但是阻止defaultCacheResolverFactory的分配,并允许我通过反射来设置值吗?

我知道这是一个丑陋的解决方案,但是老实说,我无法想象其他任何处理方式。

最佳答案

DefaultCacheResolverFactory是您的库jar的一部分吗?

  • 如果没有,我猜这是一个版本问题。
  • 否则,您应该查找库的错误修正版本或打开票证。
  • 最后但并非最不重要的一点是,您可以在类加载时使用AspectJ加载时编织来操作字节码。但这要求您始终使用“加载时编织”来启动代码。参见Load-Time Weaving

  • 所以我个人更喜欢选项1或2。

    08-07 01:02