用Java打印对象值

时间:2012-04-27 02:00:08

标签: java eclipse object

使用代码

package items;

public class itemtest {

static itemobject[] item = new items[10];
    {
    items[0] = new Toy("Example ID","Example Desc");
    items[1] = new Toy("Second Example ID", " Second Example Desc");
    }

    public static void main(String[] args) 
{
String tid = items[0].exampleiD;
 System.out.print(tid);
}
}

我收到错误:

Exception in thread "main" java.lang.NullPointerException at items.itemtest.main(itemtest.java:17)
代码行上的

String tid = item[0].exampleID;

抱歉,我对java很新,有人能说清楚我做错了吗?

2 个答案:

答案 0 :(得分:2)

 {
    items[0] = new Toy("Example ID","Example Desc");
    items[1] = new Toy("Second Example ID", " Second Example Desc");
 }

你需要在这个块之前加上单词static才能让它在加载类时生效 - 这是你实际想要发生的事情,基于你的代码 - 而不是新的创建了itemobject的实例,这在您的代码中永远不会发生。

答案 1 :(得分:0)

从您的代码段我假设您认为您正在尝试执行以下操作:

  • 声明项目数组
  • 使用玩具对象
  • 初始化前两个项目
  • 获取阵列的第一项并将其打印

代码中的问题是:

  • 您将items数组声明为static field
  • 您有一个初始化数组的实例初始化块
  • 您有一个主要功能,您可以在其中获取该项目并进行打印

问题是初始化块是在实例的初始化时完成的。然而,主要方法是static方法,没有实例。因此,该块尚未被调用,您将获得NPE。

你需要像static一样制作初始化块:

static {
    items[0] = new Toy...
    items[1] = new Toy...
} 

初始化类时,将调用static初始化块一次。这样就可以在main运行之前调用它。