Test类在init方法 时候admin这个变量没有被实例化import java.io.*; import java.util.*;public class Test { Admin admin; //实例化管理员类-----这样只是声明,根本没有实例化 public static void main(String[] args) throws Exception { Scanner scan = new Scanner(System.in); Test test = new Test(); test.initAdmin(); } public void initAdmin() { admin=new Admin();//这里实例化 admin.adList.add(new Admin("Rin","admin","admin")); } } public class Admin extends User { ArrayList adList = new ArrayList(); //ArrayList adList = null; public Admin(){}
import java.util.ArrayList; import java.util.Scanner;public class Test { Admin admin; //实例化管理员类 public static void main(String[] args) throws ClassNotFoundException {//把NotFoundException 改为 ClassNotFoundException Scanner scan = new Scanner(System.in); Test test = new Test(); test.initAdmin(); } public void initAdmin() { admin.adList.add(new Admin("Rin", "admin", "admin")); } }//---------------------------------- //用来创建存储Admin信息的Admin类 class Admin extends User { public static ArrayList adList = new ArrayList();//前面添加一个public static //ArrayList adList = null; public Admin(String adID, String adPwd, String uType) { //adList = new ArrayList(); this.userID = adID; this.userPassword = adPwd; this.userType = uType; } }//------------------------------------------ //Admin继承的User类 abstract class User { public String userID; public String userPassword; public String userType;}
感谢楼上两位大大,不过一楼的方法用过后还是会报错: Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - constructor Admin in class test.Admin cannot be applied to given types; required: java.lang.String,java.lang.String,java.lang.String found: no arguments reason: actual and formal argument lists differ in length然后,为什么像二楼那样加一个public static就可以了呢... 然后,加了这个声明后,如果以后再程序中想往adList中添加元素是不是可以呢?
你也太弱了吧,你就不知道import Admin这个类?CSDN上完全不懂Java的人太多,实在无语,你们这个水平只能给你们“喂食”稍微遇到一点问题就不懂自己解决,给你贴出来你只需要复制粘贴的代码别说我代码有问题,是你不自己import,这次直接使用default的class写在一个Java里面 import java.io.*; import java.util.*;public class Test11 { Admin admin; //实例化管理员类 public static void main(String[] args) throws Exception { Scanner scan = new Scanner(System.in); Test11 test = new Test11(); test.initAdmin(); } public void initAdmin() { admin=new Admin(); admin.adList.add(new Admin("Rin","admin","admin")); } }class Admin extends User { ArrayList adList = new ArrayList(); //ArrayList adList = null; public Admin(){} public Admin(String adID, String adPwd, String uType) { //adList = new ArrayList(); this.userID = adID; this.userPassword = adPwd; this.userType = uType; } } abstract class User { public String userID; public String userPassword; public String userType;}
import java.util.*;public class Test
{
Admin admin; //实例化管理员类-----这样只是声明,根本没有实例化 public static void main(String[] args) throws Exception
{
Scanner scan = new Scanner(System.in);
Test test = new Test();
test.initAdmin();
}
public void initAdmin()
{
admin=new Admin();//这里实例化
admin.adList.add(new Admin("Rin","admin","admin"));
}
}
public class Admin extends User
{
ArrayList adList = new ArrayList();
//ArrayList adList = null; public Admin(){}
public Admin(String adID, String adPwd, String uType)
{
//adList = new ArrayList();
this.userID = adID;
this.userPassword = adPwd;
this.userType = uType;
}
}
import java.util.Scanner;public class Test {
Admin admin; //实例化管理员类 public static void main(String[] args) throws ClassNotFoundException {//把NotFoundException 改为 ClassNotFoundException
Scanner scan = new Scanner(System.in);
Test test = new Test();
test.initAdmin();
} public void initAdmin() {
admin.adList.add(new Admin("Rin", "admin", "admin"));
}
}//----------------------------------
//用来创建存储Admin信息的Admin类
class Admin extends User {
public static ArrayList adList = new ArrayList();//前面添加一个public static //ArrayList adList = null;
public Admin(String adID, String adPwd, String uType) {
//adList = new ArrayList();
this.userID = adID;
this.userPassword = adPwd;
this.userType = uType;
}
}//------------------------------------------
//Admin继承的User类
abstract class User {
public String userID;
public String userPassword;
public String userType;}
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - constructor Admin in class test.Admin cannot be applied to given types;
required: java.lang.String,java.lang.String,java.lang.String
found: no arguments
reason: actual and formal argument lists differ in length然后,为什么像二楼那样加一个public static就可以了呢...
然后,加了这个声明后,如果以后再程序中想往adList中添加元素是不是可以呢?
import java.io.*;
import java.util.*;public class Test11
{
Admin admin; //实例化管理员类 public static void main(String[] args) throws Exception
{
Scanner scan = new Scanner(System.in);
Test11 test = new Test11();
test.initAdmin();
}
public void initAdmin()
{
admin=new Admin();
admin.adList.add(new Admin("Rin","admin","admin"));
}
}class Admin extends User
{
ArrayList adList = new ArrayList();
//ArrayList adList = null; public Admin(){} public Admin(String adID, String adPwd, String uType)
{
//adList = new ArrayList();
this.userID = adID;
this.userPassword = adPwd;
this.userType = uType;
}
}
abstract class User
{
public String userID;
public String userPassword;
public String userType;}
只不过他贴出来的代码中少了User类.可能是这个原因吧.三.2楼的方法也很好,将ArrayList类成员变量list设为静态的,这样不需要Admin对象实例化,这个list也存在了(静态成员变量在使用这个类的时候就被创建了).所以后面的add方法得以执行.
不过admin.adlist最好改成Admin.adlist.因为静态成员变量一般由类名调用,而不是由对象调用.
Admin admin 只是创建一个引用 ,没得开辟空间的。