我想创建一个名为User的类的数组对象,当我单击一个复选框时,应该创建该类的新对象。当我运行并单击复选框错误时: 线程“AWT-EventQueue-0”中的异常java.lang.NullPointerException
public class User
{
public int user_amt;
int user_location;
String user_name;
private boolean user_isSelected()
{
return true;
}
int user_id;
User()
{
user_amt = 0;
user_location = 0;
user_name = "NUL";
user_id = 0;
user_isSelected();
}
}
class main()
{
int users_active;
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
users_active++;
User[] user = new User();
}
}
答案 0 :(得分:1)
试试:
User[] user = new User[5];
user[0] = new User();
答案 1 :(得分:0)
您的代码的问题在于您正在创建引用数组,但必须在堆上创建每个引用。
所以User[] user = new User[5]
< - 创建5个引用
user[0] = new User();
< - 在堆上创建1个User
类型的对象,并将其分配给user[0]
引用。
答案 2 :(得分:0)
以下是完全错误的。
User[] user = new User();
User[] user
是一个User数组,而new User()
是User的单个实例。
其次,当您使用C ++,C#或Java进行编码时,需要放弃所有关于visual basic的知识,在这需要在向其添加成员之前预先分配数组的大小。
你做不到
User[] users;
for(int i=0; i<10; i++){
users[i] = new User();
}
你必须
User[] users = User[10];
for(int i=0; i<10; i++){
users[i] = new User();
}
或
User[] users = {
new User(), new User(), new User(), new User(), new User(),
new User(), new User(), new User(), new User(), new User()
}
这就是为什么你应该考虑使用ArrayList,因为它们是可扩展的。虽然阵列不可扩展。
List<User> users = new ArrayList<User>();
for(int i=0; i<10; i++){
users.add(new User());
}
要获得第5名成员,
users.get(4);