我刚刚看到本教程通过应用DAO模式使用同一个实例创建多个对象,并在一个简单的控制台中对其进行了尝试,但据我所知,我总是感到困惑java.lang.NullPointerException
,据我所知,构造函数只能使用一次,并且该对象将是不可变的。请看一下:
Fighter.java
public class Fighter {
private String style;
public Fighter() {}
public String getStyle() {
return style;
}
public void setStyle(String style) {
this.style = style;
}
}
FightersDAO.java
public class FightersDAO {
public List<Fighter> getFighters(){
List <Fighter> fighter = new ArrayList<>();
String [] styles= { "Karate", "Sumo", "Pro-Wrestling" };
for(int i=0; i < styles.length; i++) {
Fighter temp = new Fighter();;
temp.setStyle(styles[i]);
fighter.add(temp);
}
return fighter;
}
}
Demo.java
public class Demo {
private static FightersDAO fighterDAO;
public static void main (String [] args) {
List <Fighter> fighters = fighterDAO.getFighters();
for(Fighter e: fighters) {
System.out.println(e.getStyle()); //this should output the objects, but nothing shows
}
}
}
为什么它为空?哪一部分出了错
答案 0 :(得分:3)
变量fighterDAO
从未初始化。因此,您在这里获得了NPE:
List <Fighter> fighters = fighterDAO.getFighters();
要解决此问题,请执行以下操作:
private static FightersDAO fighterDAO = new FightersDAO();
答案 1 :(得分:3)
import emojiPlugin, { defaultTheme } from 'draft-js-emoji-plugin';
// say i need to extend the emojiSelectPopover's css then.
defaultTheme.emojiSelectPopover = defaultTheme.emojiSelectPopover + " own-class"
// own class is a class with your required enhanced css. this helps in preserving the old css.
const emojiPlugin = createEmojiPlugin({
theme : defaultTheme
})
我认为有一个问题,因为它没有初始化。
更改:
private static FightersDAO fighterDAO;
答案 2 :(得分:0)
在您的代码中
private static FightersDAO fighterDAO; //此处未初始化。它只是一个声明,所以fighterDAO = null;
在执行以下代码时将抛出异常 列出战斗人员= fighterDAO.getFighters(); //表示null.getFighters();
下面是正确的代码
package aks;
import java.util.List;
公共课程演示{ 私人静态FightersDAO fighterDAO = new FightersDAO();
public static void main (String [] args) {
List <Fighter> fighters = fighterDAO.getFighters();
for(Fighter e: fighters) {
System.out.println(e.getStyle());
}
}
}
您可以通过仅在eclise或任何IDE上调试来进行分析
如果您要使用同一实例,请使用以下代码
私有静态FightersDAO fighterDAO = new FightersDAO();