gpt4 book ai didi

java - 在注入(inject)对象时强制创建对象的新实例

转载 作者:行者123 更新时间:2023-11-30 09:07:50 26 4
gpt4 key购买 nike

我正在编写一个应用程序,在其中定义了一个自定义 ComboBox(我们称它为 MyComboBox)。我想在两个不同的面板中单独使用它(比方说 APanel 和 BPanel )。注入(inject)层次结构如下:

BPanel has MyComboBox injected
MyWindow has BPanel injected
APanel has MyWindow AND MyComboBox injected

问题是我在 BPanel 中向 MyComboBox 添加了不同的监听器/操作,在 APanel 中向 MyComboBox 添加了不同的监听器/操作,但是因为它在一个“注入(inject)狂潮”中,所以只创建了一个 MyComboBox 实例并且所有监听器都共享。

我已经尝试将范围从@Dependant(默认范围)更改为@RequestScoped,但没有帮助。

我自己找到了两种方法来解决这个问题:

  1. 使用标准 Java 构造函数手动创建组合框。
  2. 使 MyComboBox 抽象并创建两个扩展它的类,例如:

    MyAPanelComboBox 扩展了 MyCombobox {//这里不需要什么

    MyBPanelComboBox 扩展了 MyCombobox {//这里不需要什么

虽然以上都不能满足我,但我想知道是否存在一种简单干净的方法来处理我的问题。

最佳答案

我现在不能尝试,但如果我是正确的,用 @Dependant(或没有任何注释)注释 MyComboBox 类应该可以工作。

无论如何,解决方法可能是注入(inject)

@Inject
private Instance<MyCombobox> comboxboxInstance;

并通过

获取新实例
comboxboxInstance.get();

关于java - 在注入(inject)对象时强制创建对象的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23834615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com