gpt4 book ai didi

java - 应用于属性的 @Inject 会生成 NullPointerException

转载 作者:行者123 更新时间:2023-11-29 09:27:00 25 4
gpt4 key购买 nike

我正在学习 Antonio Goncalves 的“Java EE 7 入门”。

书上说有三种应用@Inject的方法:
- 一个属性(property)
- 构造函数
- 一个方法(setter)

当我尝试第一种方法时,我得到了 NullPointerException。我知道“NullPointerException”是什么意思,也知道为什么会这样。我无法得到的是为什么它不能与 @Inject 一起工作。我必须显式实例化一个类型吗?那么 CDI 有什么意义呢?

这是我的代码。

import javax.inject.Inject;

public class BookService {

@Inject @ThirteenDigits
private NumberGenerator numberGenerator;

public Book createBook(String title, Float price, String description){
Book book = new Book(title, price, description);
book.setIsbn(numberGenerator.generateNumber());
return book;
}
}

@ThirteenDigits
public class IsbnGenerator implements NumberGenerator{

@Override
public String generateNumber() {
return "ISBN";
}
}

最佳答案

这个问题的答案是“永远不要在你愚蠢的时候在这里发布你的问题”。我的意思是,虽然很难承认。在我的(这个)案例中,我没有初始化 WeldContainer...)

因此上面的代码应该在调用类中伴随以下代码:

public class Main{
public static void main(String... args){
Weld weld = new Weld();
WeldContainer container = weld.initialize();
BookService bookService = container.instance().select(BookService.class).get();
weld.shutdown();
}
}

关于java - 应用于属性的 @Inject 会生成 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52315446/

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