我一直在为我创建的尚未初始化的对象数组获得<?php
$url = $_GET['url'];
echo '"'.$url.'"'.'is the requested page';
?>
。但是我的播放器类有一个默认的构造函数,所以我认为它会没问题。为什么我不能用这些对象调用实例方法?
我的主要代码块:
NullPointerException
这是我的玩家构造函数:
public class Blackjack{
public static void main(String[] args){
Player[] p;
p = new Player[6];
}
}
答案 0 :(得分:1)
实例化数组后,必须使用以下函数实例化数组的每个元素:
p[i] = new Player();
之前,您可以调用这些元素的方法,因为在您执行此操作之前,p[i]
每个null
都包含i
。
答案 1 :(得分:1)
Player[] p; p = new Player[6];
这将使p
引用一个包含6个null元素的数组。 new Player[6];
没有运行构造函数
答案 2 :(得分:1)
数组是容器。在costumer_entity
s的情况下,他们持有引用。您可以将代码与
Object
不为每个长度和类型创建一个类,而是通过class PlayerContainerWith3Elements {
public Player element0; // default initialized with null
public Player element1;
public Player element2;
}
PlayerContainerWith3Elements p = new PlayerContainerWith3Elements();
p.element0.helloNullPointer();
创建一个容器,这样更方便。但是像手动容器一样,您必须单独设置所有元素的引用。在小数组中通过初始化语法:
new Player[3]
循环更大的东西
Player[] p = new Player[]{ new Player(), new Player(), new Player()};
// => makes a new Player[3] and puts the three objects in the 3 slots.
或者在Java 8中你可以做到
Player[] p = new Player[3];
for (int i = 0; i < p.length; i++)
p[i] = new Player();
答案 3 :(得分:0)
您的代码会创建一个大小为6
Player[] p;
p = new Player[6];
p
现在是:{ null, null, null, null, null, null }
相反,你想用Player-objects填充这个数组,所以试试这个:
Player[] p = new Player[6];
for (int i = 0; i < p.length; i++){
p[i] = new Player();
}
p
现在是:{ aPlayerInstance1, aPlayerInstance2, aPlayerInstance3, aPlayerInstance4, aPlayerInstance5, aPlayerInstance6 }