Java 为什么会出现这种情况<;对象>;是空的吗?

Java 为什么会出现这种情况<;对象>;是空的吗?,java,postconstruct,Java,Postconstruct,我的结构如下: public class StringFactory { @Inject private Instance<StringFormatter> formatterInstances; @PostConstruct public void init() { for (AddressFormatter formatter : formatterInstances) { System.out.print

我的结构如下:

public class StringFactory {
    @Inject
    private Instance<StringFormatter> formatterInstances;

    @PostConstruct
    public void init() {
        for (AddressFormatter formatter : formatterInstances) {
            System.out.println("String formater: " + formatter);
        }
    }
 }
StringFormatterWorkr

public class StringFormaterForKR implements StringFormatter {

    @Override
    public String createFormattedString(String x) {
        return null;
    }
默认字符串格式化程序

public class DefaultStringFormater implements StringFormatter {

    @Override
    public String createFormattedString(String x) {
        return null;
    }
试验

我不明白formatterInstances为什么为空? 我还看到,从施工后的信息从来没有打印出来


你对此有什么解释吗?

为什么你希望它是非空的?我认为它会有:DefaultStringFormatter和StringFormatterWorkr为什么
formatterInstances
会是非空的?什么在初始化它?注释不是魔法。代码的哪一部分正在处理
@Inject
注释?代码中没有注入任何内容,这就是为什么字段为
null
。您已经编写了新的StringFactory()。注射发生在哪里?注射的是什么?
public class DefaultStringFormater implements StringFormatter {

    @Override
    public String createFormattedString(String x) {
        return null;
    }
public class Test() {
    public static void main(String args[]) {
      StringFactory factory = new StringFactory(); 
    }     
}